Autor: Wellx
Der wlxBW5ZoneAlert ist ein Semaphore-Signalindikator, der auf den Werten des Accelerator Oscillator und des Awesome Oscillator von Bill Williams basiert. Er bietet praktische Alerts, die dir per E-Mail und Push-Benachrichtigung auf dein mobiles Gerät gesendet werden.
Um die Alerts, E-Mail-Nachrichten und Push-Benachrichtigungen zu integrieren, wurden folgende Änderungen am Indikatorcode vorgenommen:
- Neue Eingabeparameter hinzugefügt:
input uint NumberofBar=1;//Barnummer für das Signal input bool SoundON=true; //Alerts aktivieren input uint NumberofAlerts=2;//Anzahl der Alerts input bool EMailON=false; //E-Mail-Benachrichtigungen aktivieren input bool PushON=false; //Push-Benachrichtigungen aktivieren
- Drei neue Funktionen zum Ende des Indikatorcodes hinzugefügt: BuySignal(), SellSignal() und GetStringTimeframe().
//+------------------------------------------------------------------+ //| Funktion für Kaufsignal | //+------------------------------------------------------------------+ void BuySignal(string SignalSirname, // Name des Indikators für E-Mail und Push-Nachrichten double &BuyArrow[], // Indikatorpuffer mit Kaufsignalen const int Rates_total, // aktuelle Anzahl der Bars const int Prev_calculated, // Anzahl der Bars beim vorherigen Tick const double &Close[], // Schlusskurs const int &Spread[]) // Spread { u//--- static uint counter=0; if(Rates_total!=Prev_calculated) counter=0; bool BuySignal=false; bool SeriesTest=ArrayGetAsSeries(BuyArrow); int index; if(SeriesTest) index=int(NumberofBar); else index=Rates_total-int(NumberofBar)-1; if(NormalizeDouble(BuyArrow[index],_Digits) && BuyArrow[index]!=EMPTY_VALUE) BuySignal=true; if(BuySignal && counter<=NumberofAlerts) { counter++; MqlDateTime tm; TimeToStruct(TimeCurrent(),tm); string text=TimeToString(TimeCurrent(),TIME_DATE)+" "+string(tm.hour)+":"+string(tm.min); SeriesTest=ArrayGetAsSeries(Close); if(SeriesTest) index=int(NumberofBar); else index=Rates_total-int(NumberofBar)-1; double Ask=Close[index]; double Bid=Close[index]; SeriesTest=ArrayGetAsSeries(Spread); if(SeriesTest) index=int(NumberofBar); else index=Rates_total-int(NumberofBar)-1; Bid+=Spread[index]; string sAsk=DoubleToString(Ask,_Digits); string sBid=DoubleToString(Bid,_Digits); string sPeriod=GetStringTimeframe(ChartPeriod()); if(SoundON) Alert("KAUF Signal Ask=",Ask," Bid=",Bid," currtime=",text," Symbol=",Symbol()," Periode=",sPeriod); if(EMailON) SendMail(SignalSirname+": KAUF-Signal-Alert","KAUF-Signal bei Ask="+sAsk+", Bid="+sBid+", Datum="+text+" Symbol="+Symbol()+" Periode="+sPeriod); if(PushON) SendNotification(SignalSirname+": KAUF-Signal bei Ask="+sAsk+", Bid="+sBid+", Datum="+text+" Symbol="+Symbol()+" Periode="+sPeriod); } u//--- } //+------------------------------------------------------------------+ //| Funktion für Verkaufssignal | //+------------------------------------------------------------------+ void SellSignal(string SignalSirname, // Name des Indikators für E-Mail und Push-Nachrichten double &SellArrow[], // Indikatorpuffer mit Verkaufssignalen const int Rates_total, // aktuelle Anzahl der Bars const int Prev_calculated, // Anzahl der Bars beim vorherigen Tick const double &Close[], // Schlusskurs const int &Spread[]) // Spread { u//--- static uint counter=0; if(Rates_total!=Prev_calculated) counter=0; bool SellSignal=false; bool SeriesTest=ArrayGetAsSeries(SellArrow); int index; if(SeriesTest) index=int(NumberofBar); else index=Rates_total-int(NumberofBar)-1; if(NormalizeDouble(SellArrow[index],_Digits) && SellArrow[index]!=EMPTY_VALUE) SellSignal=true; if(SellSignal && counter<=NumberofAlerts) { counter++; MqlDateTime tm; TimeToStruct(TimeCurrent(),tm); string text=TimeToString(TimeCurrent(),TIME_DATE)+" "+string(tm.hour)+":"+string(tm.min); SeriesTest=ArrayGetAsSeries(Close); if(SeriesTest) index=int(NumberofBar); else index=Rates_total-int(NumberofBar)-1; double Ask=Close[index]; double Bid=Close[index]; SeriesTest=ArrayGetAsSeries(Spread); if(SeriesTest) index=int(NumberofBar); else index=Rates_total-int(NumberofBar)-1; Bid+=Spread[index]; string sAsk=DoubleToString(Ask,_Digits); string sBid=DoubleToString(Bid,_Digits); string sPeriod=GetStringTimeframe(ChartPeriod()); if(SoundON) Alert("VERKAUF Signal Ask=",Ask," Bid=",Bid," currtime=",text," Symbol=",Symbol()," Periode=",sPeriod); if(EMailON) SendMail(SignalSirname+": VERKAUF-Signal-Alert","VERKAUF-Signal bei Ask="+sAsk+", Bid="+sBid+", Datum="+text+" Symbol="+Symbol()+" Periode="+sPeriod); if(PushON) SendNotification(SignalSirname+": VERKAUF-Signal bei Ask="+sAsk+", Bid="+sBid+", Datum="+text+" Symbol="+Symbol()+" Periode="+sPeriod); } u//--- } //+------------------------------------------------------------------+ //| Zeitrahmen als String erhalten | //+------------------------------------------------------------------+ string GetStringTimeframe(ENUM_TIMEFRAMES timeframe) { //---- return(StringSubstr(EnumToString(timeframe),7,-1)); //---- }
- Aufrufe der Funktionen BuySignal() und SellSignal() nach den Berechnungszyklen des Indikators im OnCalculate()-Block hinzugefügt:
u//--- BuySignal("wlxBW5ZoneAlert",BuyBuffer,rates_total,prev_calculated,close,spread); SellSignal("wlxBW5ZoneAlert",SellBuffer,rates_total,prev_calculated,close,spread); u//---
Die Namen BuyBuffer und SellBuffer sind die Puffer des Indikators, in denen die Kauf- und Verkaufssignale gespeichert werden. Leere Werte in den Indikator-Puffern müssen entweder auf Null oder EMPTY_VALUE gesetzt werden.
Es wird angenommen, dass nur ein Aufruf der Funktionen BuySignal() und SellSignal() im OnCalculate()-Block des Indikatorcodes verwendet wird.
Der Indikator nutzt die Klassen der SmoothAlgorithms.mqh Bibliothek (kopiere sie in
Ursprünglich wurde dieser Indikator in MQL4 geschrieben und erstmals am Code Base am 08.03.2008 veröffentlicht.

Abb.1. Der wlxBW5ZoneAlert Indikator im Chart
Abb.2. Der wlxBW5ZoneAlert Indikator. Alerts generieren.
Verwandte Beiträge
- Tägliche prozentuale Veränderung in MT5 – Indikator für MetaTrader 5
- Uniformitätsfaktor-Indikator für MetaTrader 5: Analysiere deine Preisbewegungen
- Boom Index Spike Pattern – Ein Leitfaden für MetaTrader 5 Trader
- ColorX2MA_Alert - Ihr neuer Trading-Indikator für MetaTrader 5
- wlxBW5Zone: Der Trading-Indikator für MetaTrader 5
