Oorspronkelijke auteur:
Wellx
De wlxBW5ZoneAlert is een semaphore signaalindicator die gebruik maakt van de waarden van de Accelerator Oscillator en de Awesome Oscillator, ontwikkeld door Bill Williams. Deze indicator biedt handige meldingen, inclusief e-mail en push-notificaties naar je mobiele apparaten.
Om de meldingen, e-mailberichten en push-notificaties te implementeren, zijn de volgende wijzigingen aangebracht in de indicatorcode:
- Nieuwe invoerparameters geïntroduceerd:
input uint NumberofBar=1;//Aantal bars voor het signaal input bool SoundON=true; //Meldingen inschakelen input uint NumberofAlerts=2;//Aantal meldingen input bool EMailON=false; //E-mail voor het signaal inschakelen input bool PushON=false; //Stuur het signaal naar mobiele apparaten
- Drie nieuwe functies toegevoegd aan de indicatorcode: BuySignal(), SellSignal() en GetStringTimeframe()
//+------------------------------------------------------------------+ //| Functie voor koop signaal | //+------------------------------------------------------------------+ void BuySignal(string SignalSirname, // tekst van de indicatornaam voor e-mail en pushberichten double &BuyArrow[], // indicatorbuffer met koop signalen const int Rates_total, // het huidige aantal bars const int Prev_calculated, // het aantal bars op de vorige tick const double &Close[], // slotprijs 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("KOOPOPTIE signaal \n Ask=",Ask,"\n Bid=",Bid,"\n huidige tijd=",text,"\n Symbool=",Symbol()," Periode=",sPeriod); if(EMailON) SendMail(SignalSirname+": KOOPOPTIE signaal alert","KOOPOPTIE signaal bij Ask="+sAsk+", Bid="+sBid+", Datum="+text+" Symbool="+Symbol()+" Periode="+sPeriod); if(PushON) SendNotification(SignalSirname+": KOOPOPTIE signaal bij Ask="+sAsk+", Bid="+sBid+", Datum="+text+" Symbool="+Symbol()+" Periode="+sPeriod); } u//--- } //+------------------------------------------------------------------+ //| Functie voor verkoop signaal | //+------------------------------------------------------------------+ void SellSignal(string SignalSirname, // tekst van de indicatornaam voor e-mail en pushberichten double &SellArrow[], // indicatorbuffer met verkoop signalen const int Rates_total, // het huidige aantal bars const int Prev_calculated, // het aantal bars op de vorige tick const double &Close[], // slotprijs 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("VERKOOP signaal \n Ask=",Ask,"\n Bid=",Bid,"\n huidige tijd=",text,"\n Symbool=",Symbol()," Periode=",sPeriod); if(EMailON) SendMail(SignalSirname+": VERKOOP signaal alert","VERKOOP signaal bij Ask="+sAsk+", Bid="+sBid+", Datum="+text+" Symbool="+Symbol()+" Periode="+sPeriod); if(PushON) SendNotification(SignalSirname+": VERKOOP signaal bij Ask="+sAsk+", Bid="+sBid+", Datum="+text+" Symbool="+Symbol()+" Periode="+sPeriod); } u//--- } //+------------------------------------------------------------------+ //| De tijdsperiode als string verkrijgen | //+------------------------------------------------------------------+ string GetStringTimeframe(ENUM_TIMEFRAMES timeframe) { //---- return(StringSubstr(EnumToString(timeframe),7,-1)); //---- }
- Een paar aanroepen van BuySignal() en SellSignal() functies toegevoegd na de indicatorberekeningen in het OnCalculate() blok
u//--- BuySignal("wlxBW5ZoneAlert",BuyBuffer,rates_total,prev_calculated,close,spread); SellSignal("wlxBW5ZoneAlert",SellBuffer,rates_total,prev_calculated,close,spread); u//---
Hierbij zijn BuyBuffer en SellBuffer de namen van de indicatorbuffers voor het opslaan van de koop- en verkoop signalen. De lege waarden in de indicatorbuffers moeten ofwel nul of EMPTY_VALUE zijn.
Er wordt aangenomen dat er maar één aanroep naar de BuySignal() en SellSignal() functies in het OnCalculate() blok van de indicatorcode zal worden gebruikt.
De indicator maakt gebruik van de SmoothAlgorithms.mqh bibliotheekklassen (kopieer deze naar <terminal_data_folder>\MQL5\Include). Het gebruik van de klassen is uitvoerig beschreven in het artikel "Averaging Price Series for Intermediate Calculations Without Using Additional Buffers".
Oorspronkelijk is deze indicator geschreven in MQL4 en voor het eerst gepubliceerd in de Code Base op 08.03.2008.

Fig.1. De wlxBW5ZoneAlert indicator op de grafiek
Fig.2. De wlxBW5ZoneAlert indicator. Het genereren van meldingen.
Gerelateerde berichten
- wlxBW5Zone - Een Handige Indicator voor MetaTrader 5
- BykovTrend_HTF_Signal: Dé Indicator voor MetaTrader 5 voor Trendanalyse
- Prijs in het Poolse Coördinatensysteem - Indicator voor MetaTrader 5
- SymbolX_Candle: Een Krachtige Indicator voor MetaTrader 5
- ATR Geïntegreerde Laguerre RSI Indicator voor MetaTrader 5
