Indikatoren: MACD_Flat_Trend

 

MACD_Flat_Trend:

Der Indikator MACD Flat Trend

MACD_Flat_Trend

Autor: Scriptor

 
Es ist ein großartiger Indikator. Er nimmt nicht viel Platz auf dem Diagramm ein. Wenn wir eine Warnung hinzufügen könnten, wäre das großartig.
 
Ich möchte einen Alarm in diesem (MACD Flat Trend Indicator) einstellen, ist dies möglich? Wenn dies möglich ist, was muss ich dann im .mq5 Code ändern? sagen Sie mir, ich werde es tun, DANKE SIR
 
Ich möchte einen Alarm in diesem ( MACD Flat Trend Indicator) einstellen, ist dies möglich? Wenn dies möglich ist, was muss ich dann im .mq5-Code ändern? sagen Sie mir, ich werde es tun, DANKE SIR
 
VIJAY JADAV MACD Flat Trend Indicator) einstellen, ist dies möglich? Wenn dies möglich ist, was muss ich dann im .mq5-Code ändern? sagen Sie mir, ich werde es tun, DANKE SIR
//--- Расчёт индикатора
   for(int i=limit; i>=0 && !IsStopped(); i--)
     {
      BufferNL[i]=BufferDN[i]=BufferUP[i]=EMPTY_VALUE;
      if(BufferMACD[i]>0 && BufferSignal[i]<BufferMACD[i])
        {
         BufferUP[i]=0.5;
         BufferNL[i]=BufferDN[i]=EMPTY_VALUE;
         Alert("Buy ", _Symbol);
        }
      else
        {
         if(BufferMACD[i]<0 && BufferSignal[i]>BufferMACD[i])
           {
            BufferDN[i]=0.5;
            BufferNL[i]=BufferUP[i]=EMPTY_VALUE;
            Alert("Sell ", _Symbol);
           }
         else
           {
            BufferNL[i]=0.5;
            BufferDN[i]=BufferUP[i]=EMPTY_VALUE;
           }
        }
     }
 
Ryan L Johnson #:
Vielen Dank, Sir, dass Sie dies für mich getan haben, aber es gibt ein kleines Problem in diesem
Die Änderung, die Sie vorgenommen haben, sorgt dafür, dass der Ton kontinuierlich abgespielt wird,
Ich möchte, dass ein Alarm nur bei der ersten Kerze der grünen Linie ausgelöst wird, bei den folgenden Kerzen soll kein Alarm ausgelöst werden.
Der Alarm sollte nur dann ausgelöst werden, wenn sich MaCd-Linie und Signallinie kreuzen, andernfalls sollte der Alarm nicht ausgelöst werden,
Ab der zweiten Kerze der grünen Linie sollte es keine Alarme mehr geben,
DANKESCHÖN

 
VIJAY JADAV #:
Vielen Dank, Sir, dass Sie das für mich getan haben, aber es gibt ein kleines Problem in diesem
Die von Ihnen vorgenommene Änderung führt dazu, dass der Ton kontinuierlich abgespielt wird,
Ich möchte einen solchen Alarm, dass, wenn die grüne Linie beginnt, sollte ich einen Alarm nur auf seine erste Kerze, sollte ich nicht einen Alarm auf die Kerzen danach erhalten
Der Alarm sollte nur dann ausgelöst werden, wenn sich MaCd-Linie und Signallinie kreuzen, andernfalls sollte der Alarm nicht ausgelöst werden,
Ab der zweiten Kerze der grünen Linie sollte es keine Warnungen mehr geben,
DANKESCHÖN

//--- Расчёт индикатора
   int lastAlert = 0; // 0 ist flach, 1 ist kaufen, 2 ist verkaufen

   for(int i=limit; i>=0 && !IsStopped(); i--)
     {
      BufferNL[i]=BufferDN[i]=BufferUP[i]=EMPTY_VALUE;
      if(BufferMACD[i]>0 && BufferSignal[i]<BufferMACD[i])
        {
         BufferUP[i]=0.5;
         BufferNL[i]=BufferDN[i]=EMPTY_VALUE;

         if(lastAlert != 1)
           {
            Alert("Buy ", _Symbol);
            lastAlert = 1;
           }
        }
      else
        {
         if(BufferMACD[i]<0 && BufferSignal[i]>BufferMACD[i])
           {
            BufferDN[i]=0.5;
            BufferNL[i]=BufferUP[i]=EMPTY_VALUE;

            if(lastAlert != 2)
              {
               Alert("Sell ", _Symbol);
               lastAlert = 2;
              }
           }
         else
           {
            BufferNL[i]=0.5;
            BufferDN[i]=BufferUP[i]=EMPTY_VALUE;
            lastAlert = 0;
           }
        }
     }

Ich habe eine Variable hinzugefügt, um den Alarm auf einen Alarm pro Crossover zu begrenzen.

 

Wenn Sie immer noch Intrabar-Warnungen erhalten, schränkt der folgende Code die Warnungen zusätzlich durch die Öffnungszeit des Balkens ein. Historische Pufferwerte können nicht verwendet werden, da sie leere Werte haben. Seien Sie sich bewusst, dass ich diesen Code weder kompiliert noch getestet habe, aber ich bin mir sicher, dass Sie es tun werden und sich wieder melden werden 😉 .

// diese 2 Zeilen oben in den Bereich der globalen Variablen einfügen
   datetime lastOpenTime;
   ulong uLastOpenTime;

//////////////////////////////////////////////////

// Fügen Sie diese 2 Zeilen in die Funktion OnInit() ein
      lastOpenTime = 0;
      uLastOpenTime = ulong(lastOpenTime);

//////////////////////////////////////////////////

//--- Расчёт индикатора
   int lastAlert = 0; // 0 ist flach, 1 ist kaufen, 2 ist verkaufen

   for(int i=limit; i>=0 && !IsStopped(); i--)
     {
      BufferNL[i]=BufferDN[i]=BufferUP[i]=EMPTY_VALUE;
      if(BufferMACD[i]>0 && BufferSignal[i]<BufferMACD[i])
        {
         BufferUP[i]=0.5;
         BufferNL[i]=BufferDN[i]=EMPTY_VALUE;

         if(lastAlert != 1 && uLastOpenTime < ulong(iTime(_Symbol, PERIOD_CURRENT, 1))
           {
            Alert("Buy ", _Symbol);
            lastAlert = 1;
            uLastOpenTime = ulong(iTime(_Symbol, PERIOD_CURRENT, 1);
           }
        }
      else
        {
         if(BufferMACD[i]<0 && BufferSignal[i]>BufferMACD[i])
           {
            BufferDN[i]=0.5;
            BufferNL[i]=BufferUP[i]=EMPTY_VALUE;

            if(lastAlert != 2 && uLastOpenTime < ulong(iTime(_Symbol, PERIOD_CURRENT, 1))
              {
               Alert("Sell ", _Symbol);
               lastAlert = 2;
               lastOpenTime = ulong(iTime(_Symbol, PERIOD_CURRENT, 1);
              }
           }
         else
           {
            BufferNL[i]=0.5;
            BufferDN[i]=BufferUP[i]=EMPTY_VALUE;
            lastAlert = 0;
           }
        }
     }