De iDeMarkerSignAlert is een handige semaphore-pijl indicator die gebaseerd is op de klassieke DeMarker oscillator. Deze indicator helpt je om overgekochte en oververkochte gebieden te identificeren en biedt handige meldingen via e-mail en push-notificaties op je mobiele apparaten.
Hieronder bespreken we de aanpassingen die zijn doorgevoerd in de code van de indicator om de meldingen, e-mailberichten en push-notificaties te implementeren:
- Nieuwe invoerparameters: De volgende parameters zijn toegevoegd:
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 inschakelen voor het signaal input bool PushON=false; //Push-notificaties inschakelen
- Drie nieuwe functies: Er zijn drie nieuwe functies toegevoegd aan het einde van de indicator code:
BuySignal(),SellSignal()enGetStringTimeframe().//+------------------------------------------------------------------+ //| Functie voor koop signalen | //+------------------------------------------------------------------+ void BuySignal(string SignalSirname, // naam van de indicator voor e-mail en pushberichten double &BuyArrow[], // indicator buffer 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[], // sluitprijs const int &Spread[]) // spread { //--- 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("KOOP signaal \n Ask=",Ask,"\n Bid=",Bid,"\n tijd=",text,"\n Symbool=",Symbol()," Periode=",sPeriod); if(EMailON) SendMail(SignalSirname+": KOOP signaal alert","KOOP signaal bij Ask="+sAsk+", Bid="+sBid+", Datum="+text+" Symbool="+Symbol()+" Periode="+sPeriod); if(PushON) SendNotification(SignalSirname+": KOOP signaal bij Ask="+sAsk+", Bid="+sBid+", Datum="+text+" Symbool="+Symbol()+" Periode="+sPeriod); } //--- }
- Functie-aanroepen: Aanroepen van de
BuySignal()enSellSignal()functies na de berekeningen in hetOnCalculate()blok:BuySignal("iWPRSign",BuyBuffer,rates_total,prev_calculated,close,spread); SellSignal("iWPRSign",SellBuffer,rates_total,prev_calculated,close,spread);
Let op dat BuyBuffer en SellBuffer de namen zijn van de indicator buffers voor het opslaan van koop- en verkoop signalen. Zorg ervoor dat lege waarden in de indicator buffers zijn ingesteld op ofwel nullen of EMPTY_VALUE.
Het is de bedoeling dat er slechts één aanroep van de BuySignal() en SellSignal() functies wordt gedaan in het OnCalculate() blok van de indicator code.

Fig.1. De iDeMarkerSignAlert indicator op de grafiek

Fig.2. De iDeMarkerSignAlert indicator. Genereert meldingen.
Gerelateerde berichten
- BykovTrend_HTF_Signal: Dé Indicator voor MetaTrader 5 voor Trendanalyse
- Open Range Breakout Indicator voor MetaTrader 5: Ontdek de Kracht van deze Tool
- Prijs in het Poolse Coördinatensysteem - Indicator voor MetaTrader 5
- ATR Geïntegreerde Laguerre RSI Indicator voor MetaTrader 5
- ATR Geïndividualiseerde EMA: De Slimme Indicator voor MetaTrader 5