표시기의 경고. 인디케이터에 알림 및 화살표를 삽입하는 방법은 무엇인가요?

메타트레이더에서 텔레그램으로 작업하기. 텔레그램 채널 및 봇
 나의 오토롯 비밀. 다이나믹 로트 또는 오토롯.
메타트레이더에서 텔레그램으로 작업하기. 텔레그램 채널 및 봇
 나의 오토롯 비밀. 다이나믹 로트 또는 오토롯.

설명

알림: 검색 엔진에서 가장 빈번하게 검색되는 쿼리와 포럼의 인기 주제는 종종 다음과 같은 문구를 포함합니다.경고-화살표

이러한 주제에 대한 알림은 최신 동향을 파악하는 데 도움이 될 수 있습니다.

  • 알림 지표
  • 지표에 사운드 신호를 추가하는 방법은?
  • 지표에 사운드 신호를 삽입하는 데 도움을 주세요
  • 알림 및 화살표를 삽입하는 방법
  • 지표에서 신호가 올 때 이메일이나 휴대폰으로 메시지를 보내는 방법은?

이 기사에서는 알림, 메일, 푸시, 화살표 알림을 추가 코드와 함께 Expforex에서 제공하는 추가 코드를 사용하여 모든 지표에 쉽게 추가하는 방법을 자세히 설명합니다.

  

서문 

지표에 알림을 올바르게 설치하려면 지표의 오픈 소스 코드가 있어야 합니다. 

초보자에게 디컴파일된 코드는 최소한의 정보만 제공하므로 바람직하지 않습니다. 이해하기 어렵습니다. 

편집 후 컴파일 문제도 발생할 수 있습니다. 

xCustomEA

복잡한 맞춤 프로그래밍에 뛰어들지 않고 트레이딩 전략을 자동화하는 더 쉬운 방법을 찾고 있다면 xCustomEA를 고려해 보세요.

Expforex의 이 전문가 어드바이저는 화살표 신호를 생성하는 지표와 원활하게 작동하도록 설계되었습니다. xCustomEA를 사용하면 매수 또는 매도 화살표를 표시하는 모든 지표를 쉽게 자동화할 수 있어 맞춤 코드를 개발하는 번거로움 없이 강력한 자동화 전략을 만들 수 있습니다.

이 전문가 어드바이저는 지표 신호를 기반으로 전략을 자동화하는 것을 매우 쉽게 만들어줍니다. 거래자들이 맞춤 프로그래밍에 시간과 자원을 소비하는 대신 트레이딩 최적화에 집중할 수 있게 해줍니다. 이 전문가 어드바이저는 프로그래머를 고용하는 훌륭한 대안으로, 지표 신호를 거래로 전환하는 간단한 솔루션을 제공합니다.

자세한 내용은 xCustomEA 페이지를 방문하거나 Expforex의 다른 전문가 어드바이저를 탐색해 보세요.

알림을 삽입하기 위한 작업 시작

   먼저, 어떤 지표 버퍼가 특정 신호를 제공하는지, 알림을 생성하는 목적, 그리고 지표에서 신호를 결정하는 조건을 파악해야 합니다. 

중요: 변수 코드의 시작 부분에 정의된 외부 버퍼만 지표에 표시될 수 있습니다: 

#property indicator_buffers 1

그러나 지표는 init() 함수에서 설정되고 변수로 선언된 숨겨진 버퍼도 포함할 수 있습니다:

IndicatorBuffers(7): 우리는 첫 번째 버퍼만 필요합니다. 

예를 들어, 외부 버퍼가 1개인 경우 변수는 다음과 같습니다: 

SetIndexBuffer(0, SarBuffer);
  • 0은 첫 번째 버퍼입니다.
  • 1은 두 번째 버퍼입니다.

이러한 버퍼 또는 그 이름은 차트에서 지표의 특정 선 위에 마우스를 올려 놓아 식별할 수 있습니다.

Value1 – 이는 첫 번째 버퍼 또는 코드의 인덱싱 시스템에서 0입니다.  

SetIndexBuffer(0, SarBuffer); // 우리가 필요한 버퍼의 이름  

만약 이것이 SarBuffer라면, 우리는 그것을 사용할 것입니다.

게다가, 신호가 어떻게 트리거될지 결정하는 것은 기술적인 문제입니다;

예를 들어, 이것이 0 선이 위(아래)에서 아래(위)로 이동하면서 교차하는 경우, 다음과 같이 보일 것입니다:

SarBuffer[shift+1] >= 0 && SarBuffer[shift] < 0

지표가 현재 가격이나 바를 교차하거나, 지표에 의한 바의 돌파 등:

SarBuffer[shift+1] >= Close[shift] && SarBuffer[shift] < Close[shift]

만약 이것이 고유 수준의 교차라면, 스토캐스틱과 같은 지표:

SarBuffer[shift+1] <= 75 && SarBuffer[shift] > 75;

SarBuffer[shift+1] >= 25 && SarBuffer[shift] < 25;

만약 이미 지표에 화살표가 있다면, 다음 유형의 신호도 가능합니다:

DnTrend[1] != EMPTY_VALUE && DnTrend[1] != 0 && UpTrend[2] != EMPTY_VALUE

어쨌든, 신호를 올바르게 기록하려면 논리와 창의력을 적용해야 합니다. 어려움이 발생하면 이 스레드에 글을 작성하고, 지표를 첨부하고, 차트에 선을 표시하고, 할 수 없는 것을 자세히 설명하세요. 어디서 무엇을 해야 하는지 설명하지 않고 “지표에 알림을 삽입해야 합니다”와 같은 메시지를 보내는 것은 도움이 되지 않습니다. 

Code “www.expforex.com의 알림 및 화살표”

우리의 알림을 지표에 추가하는 다음 단계는 여러 가지 점으로 구성됩니다:

1단계

다음 코드를 OnCalculate() (start) 함수 전에 전문가 어드바이저의 시작 부분에 삽입하세요:

//+==+//+ www.expforex.com edit AlertArrow +//+==+
extern string Alerts="Alerts and arrows from www.expforex.com";
extern bool AlerT=true; // Issue an alert to the screen
extern bool Mail=true; // Send message
extern bool Push=true; // Send PUSH to phone
extern bool Arrow=true; // Put arrows on signals
extern int shift=1; // On which bar to count the signal 0 - on the current one, 1 - on the closed
int timeee;
// Internal variable
string nameInd;
void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=3)
{
  if(nm=="")
    nm=DoubleToStr(Time[0], 0);
  if(t1 <= 0)
    t1=Time[0];
  if(p1 <= 0)
    p1=Bid;
  nameInd=WindowExpertName();
  int wind=WindowFind(nameInd);
  wind=0;
  if(ObjectFind(nm) < 0)
    ObjectCreate(nm, OBJ_ARROW, wind, 0, 0);
  ObjectSet(nm, OBJPROP_TIME1, t1);
  ObjectSet(nm, OBJPROP_PRICE1, p1);
  ObjectSet(nm, OBJPROP_ARROWCODE, cd);
  ObjectSet(nm, OBJPROP_COLOR, cl);
  ObjectSet(nm, OBJPROP_WIDTH, sz);
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Expforex_AlertArrow(string text="", int arrowdir=0, bool history=false, int i=0)
{
  nameInd=WindowExpertName();
  int wind=WindowFind(nameInd);
  if(wind==-1)
    wind=0;
  ObjectCreate("Originalalert", OBJ_LABEL, wind, 0, 0);
  ObjectSetText("Originalalert", "Modification AlertArrow www.expforex.com", 10, "Arial Bold", Red);
  ObjectSet("Originalalert", OBJPROP_CORNER, 2);
  ObjectSet("Originalalert", OBJPROP_XDISTANCE, 200);
  ObjectSet("Originalalert", OBJPROP_YDISTANCE, 10);
  if(!history)
  {
    if(AlerT)
      Alert(text);
    if(Arrow)
      if(arrowdir==1)
        SetArrow(241, Blue, nameInd + DoubleToStr(Time[shift], 0), Time[shift], Low[shift]);
    if(Arrow)
      if(arrowdir==2)
        SetArrow(242, Red, nameInd + DoubleToStr(Time[shift], 0), Time[shift], High[shift]);
    if(!IsTesting())
      if(Mail)
        SendMail(text, text);
    if(!IsTesting())
      if(Push)
        SendNotification(text);
  }
  if(history)
  {
    if(Arrow)
      if(arrowdir==1)
        SetArrow(241, Blue, nameInd + DoubleToStr(Time[shift + i2], 0), Time[shift + i2], Low[shift + i2]);
    if(Arrow)
      if(arrowdir==2)
        SetArrow(242, Red, nameInd + DoubleToStr(Time[shift + i2], 0), Time[shift + i2], High[shift + i2]);
  }
}//+==+//+ www.expforex.com edit AlertArrow +//+==+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  for(int i=ObjectsTotal(); i>=0; i--)
  {
    if(StringFind(ObjectName(i), nameInd)!=-1)
      ObjectDelete(ObjectName(i));
  }
}
//+------------------------------------------------------------------+

2단계

 OnCalculate() 함수를 닫기 전에 다음 코드를 삽입하세요:

return(rates_total); }

다음 코드를 붙여넣으세요:

//+==+//+ www.expforex.com edit AlertArrow +//+==+

nameInd=WindowExpertName();

if(timeee != Time[0] && SarBuffer[shift+1] <= 75 && SarBuffer[shift] > 75)
{
  Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " UP", 1);
  timeee=Time[0];
}
if(timeee != Time[0] && SarBuffer[shift+1] >= 25 && SarBuffer[shift] < 25)
{
  Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " DN", 2);
  timeee=Time[0];
}//+==+//+ www.expforex.com edit AlertArrow +//+==+

3단계

이 코드는 우리의 신호 역할을 합니다.

자연스럽게, 일부 코드를 자신의 것으로 교체해야 합니다. 

다음 코드는 알림의 신호 역할을 합니다:

1. 0 선이 위(아래)에서 아래(위)로 이동하면서 교차하는 경우, 다음과 같이 보일 것입니다:

SarBuffer[shift+1] >= 0 && SarBuffer[shift] < 0

2. 지표가 현재 가격이나 바를 교차하거나, 지표에 의한 바의 돌파 등:

SarBuffer[shift+1] >= Close[shift] && SarBuffer[shift] < Close[shift]

3. 만약 이것이 고유 수준의 교차라면, 스토캐스틱과 같은 지표:

SarBuffer[shift+1] <= 75 && SarBuffer[shift] > 75;

SarBuffer[shift+1] >= 25 && SarBuffer[shift] < 25;

사용 후

지표에 사운드 신호를 추가하려면 다음 단계를 따르세요:

  • 1. 지표 설정을 엽니다.
  • 2. “알림” 또는 “화살표” 섹션을 찾습니다.
  • 3. 사운드 알림을 추가하는 옵션을 선택합니다.
  • 4. 알림으로 사용할 사운드 파일을 선택합니다.
  • 5. 변경 사항을 저장합니다.

지표에 사운드 신호를 삽입하면 특정 조건이 충족될 때 청각적 알림을 받을 수 있어 더 나은 거래 결정을 내리는 데 도움이 됩니다.

역사에 화살표가 필요하다면, 다음을 수행해야 합니다:

위의 코드 다음에 다음을 추가하세요:

//+==+//+ www.expforex.com edit AlertArrow +//+==+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
if(counted_bars > 0)
   counted_bars--;
int limit2 = Bars - counted_bars;
for(int i2 = 0; i2 < limit2; i2++) {
    nameInd = WindowExpertName();
    if(SarBuffer[shift+1+i2] <= 75 && SarBuffer[shift+i2] > 75)
    {
        Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " UP" + i2, 1, true, i2);
    }
    if(SarBuffer[shift+1+i2] >= 25 && SarBuffer[shift+i2] < 25)
    {
        Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " DN" + i2, 2, true, i2);
    }
}
//+==+//+ www.expforex.com edit AlertArrow +//+==+

예제

이 예제는 저희 포럼의 해당 섹션에서 가져왔습니다. 위에서 설명한 원칙에 따라 지표를 수정했습니다. 

결론

이 기사에서는 지표를 위한 신호를 생성하는 과정을 가장 상세하고 이해하기 쉽게 설명했습니다.

위의 코드는 모든 지표에 제한 없이 사용할 수 있습니다. 지표에 코드를 추가할 때 저자의 이름을 변경하지 않는 것이 중요합니다. 

이 기사가 마음에 들었고 이 신호 삽입 방법이 유용했다면, 댓글을 남기고 주제를 평가해 주세요. 

신호 바: 알아야 할 중요한 사항

질문이 있으신가요?

질문이 있으시면, 주저하지 말고 문의해 주세요. 저희는 믿을 수 없는 상품을 판매하지 않습니다.

또한, 저희의 각 제품은 구매 전에 테스트할 수 있습니다.

저희 제품에 대한 귀하의 관심과 지원에 감사드리며, 높은 품질 기준을 유지하기 위해 노력합니다.

함께 해 주셔서 감사합니다!

질문이 있으신가요?

Leave a Reply

Your email address will not be published. Required fields are marked *

This post is also available in: English Українська Portuguese Español Deutsch Chinese Русский Français Italiano Türkçe 日本語 한국어


    잠시만 기다려 주세요, AI와 통신 중...

     

    위험 경고:


    과거의 거래 실적이 미래의 결과를 보장하는 것은 아닙니다.

    마진 외환 거래는 높은 수준의 위험을 수반하므로 모든 투자자에게 적합하지 않을 수 있습니다.

    트레이딩 로봇을 사용하면 상당한 위험이 수반되며 초기 투자금보다 더 많은 손실을 볼 수 있다는 점에 유의하세요.

    신중하게 진행하고, 재정 상황을 신중하게 평가하고, 자격을 갖춘 전문가에게 조언을 구하는 것이 좋습니다.

    면책 조항

    이 웹사이트는 귀하의 경험을 향상시키기 위해 쿠키를 사용합니다. 이 웹사이트를 사용함으로써 귀하는 당사의 데이터 보호 정책면책 조항에 동의하게 됩니다.
    더 읽기