Indikatoren: MACD_Flat_Trend
//--- Расчёт индикатора 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; } } }
//--- Расчёт индикатора 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; } } }
MACD_Flat_Trend:
Der Indikator MACD Flat Trend
Autor: Scriptor