Home Technische indicator Bericht

Iin_MA_Signal_Alert: De Nieuwe Indicator voor MetaTrader 5

Bijlage
21911.zip (4.1 KB, Downloaden 0 keer)

Hoofdauteur: Iin Zulkarnainn

Iin_MA_Signal is een handige semaphore signaalindicator die meldingen, e-mails en pushnotificaties biedt.

Voor de implementatie van meldingen, e-mailberichten en pushnotificaties zijn de volgende wijzigingen aangebracht in de indicatorcode:

  1. Nieuwe invoerparameters toegevoegd:
    input uint AantalBars=1;// Aantal bars voor het signaal
    input bool GeluidAan=true; // Meldingen inschakelen
    input uint AantalMeldingen=2;// Aantal meldingen
    input bool EMailAan=false; // E-mail melding inschakelen
    input bool PushAan=false; // Pushmelding naar mobiele apparaten inschakelen
    
  2. Drie nieuwe functies toegevoegd aan het einde van de indicatorcode: BuySignal(), SellSignal() en GetStringTimeframe()
    //+------------------------------------------------------------------+
    //| Koop signaal functie                                              |
    //+------------------------------------------------------------------+
    void BuySignal(string SignalNaam,      // tekst van de indicatornaam voor e-mail en pushberichten
                   double &KoopPijlen[],        // indicatorbuffer met koop signalen
                   const int TotaalBars,     // het huidige aantal bars
                   const int Vorige_berekend,// het aantal bars op de vorige tick
                   const double &Sluit[],     // slotprijs
                   const int &Spread[])       // spread
      {
    //---
       static uint teller=0;
       if(TotaalBars!=Vorige_berekend) teller=0;
    
       bool KoopSignaal=false;
       bool SerieTest=ArrayGetAsSeries(KoopPijlen);
       int index;
       if(SerieTest) index=int(AantalBars);
       else index=TotaalBars-int(AantalBars)-1;
       if(NormalizeDouble(KoopPijlen[index],_Digits) && KoopPijlen[index]!=EMPTY_VALUE) KoopSignaal=true;
       if(KoopSignaal && teller<=AantalMeldingen)
         {
          teller++;
          MqlDateTime tm;
          TimeToStruct(TimeCurrent(),tm);
          string tekst=TimeToString(TimeCurrent(),TIME_DATE)+" "+string(tm.hour)+":"+string(tm.min);
          SerieTest=ArrayGetAsSeries(Sluit);
          if(SerieTest) index=int(AantalBars);
          else index=TotaalBars-int(AantalBars)-1;
          double Vraag=Sluit[index];
          double Bod=Sluit[index];
          SerieTest=ArrayGetAsSeries(Spread);
          if(SerieTest) index=int(AantalBars);
          else index=TotaalBars-int(AantalBars)-1;
          Bod+=Spread[index];
          string sVraag=DoubleToString(Vraag,_Digits);
          string sBod=DoubleToString(Bod,_Digits);
          string sPeriode=GetStringTimeframe(ChartPeriod());
          if(GeluidAan) Alert("KOOP signaal 
     Vraag=",Vraag,"
     Bod=",Bod,"
     huidige tijd=",tekst,"
     Symbool=",Symbol()," Periode=",sPeriode);
          if(EMailAan) SendMail(SignalNaam+": KOOP signaal melding","KOOP signaal bij Vraag="+sVraag+", Bod="+sBod+", Datum="+tekst+" Symbool="+Symbol()+" Periode="+sPeriode);
          if(PushAan) SendNotification(SignalNaam+": KOOP signaal bij Vraag="+sVraag+", Bod="+sBod+", Datum="+tekst+" Symbool="+Symbol()+" Periode="+sPeriode);
         }
    
    //---
      }
    //+------------------------------------------------------------------+
    //| Verkoop signaal functie                                             |
    //+------------------------------------------------------------------+
    void SellSignal(string SignalNaam,      // tekst van de indicatornaam voor e-mail en pushberichten
                    double &VerkoopPijlen[],       // indicatorbuffer met verkoop signalen
                    const int TotaalBars,     // het huidige aantal bars
                    const int Vorige_berekend, // het aantal bars op de vorige tick
                    const double &Sluit[],     // slotprijs
                    const int &Spread[])       // spread
      {
    //---
       static uint teller=0;
       if(TotaalBars!=Vorige_berekend) teller=0;
    
       bool VerkoopSignaal=false;
       bool SerieTest=ArrayGetAsSeries(VerkoopPijlen);
       int index;
       if(SerieTest) index=int(AantalBars);
       else index=TotaalBars-int(AantalBars)-1;
       if(NormalizeDouble(VerkoopPijlen[index],_Digits) && VerkoopPijlen[index]!=EMPTY_VALUE) VerkoopSignaal=true;
       if(VerkoopSignaal && teller<=AantalMeldingen)
         {
          teller++;
          MqlDateTime tm;
          TimeToStruct(TimeCurrent(),tm);
          string tekst=TimeToString(TimeCurrent(),TIME_DATE)+" "+string(tm.hour)+":"+string(tm.min);
          SerieTest=ArrayGetAsSeries(Sluit);
          if(SerieTest) index=int(AantalBars);
          else index=TotaalBars-int(AantalBars)-1;
          double Vraag=Sluit[index];
          double Bod=Sluit[index];
          SerieTest=ArrayGetAsSeries(Spread);
          if(SerieTest) index=int(AantalBars);
          else index=TotaalBars-int(AantalBars)-1;
          Bod+=Spread[index];
          string sVraag=DoubleToString(Vraag,_Digits);
          string sBod=DoubleToString(Bod,_Digits);
          string sPeriode=GetStringTimeframe(ChartPeriod());
          if(GeluidAan) Alert("VERKOOP signaal 
     Vraag=",Vraag,"
     Bod=",Bod,"
     huidige tijd=",tekst,"
     Symbool=",Symbol()," Periode=",sPeriode);
          if(EMailAan) SendMail(SignalNaam+": VERKOOP signaal melding","VERKOOP signaal bij Vraag="+sVraag+", Bod="+sBod+", Datum="+tekst+" Symbool="+Symbol()+" Periode="+sPeriode);
          if(PushAan) SendNotification(SignalNaam+": VERKOOP signaal bij Vraag="+sVraag+", Bod="+sBod+", Datum="+tekst+" Symbool="+Symbol()+" Periode="+sPeriode);
         }
    //---
      }
    //+------------------------------------------------------------------+
    //|  Tijdframe ophalen als string                               |
    //+------------------------------------------------------------------+
    string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)
      {
    //----
       return(StringSubstr(EnumToString(timeframe),7,-1));
    //----
      }
    
  3. Een paar aanroepen van de BuySignal() en SellSignal() functies toegevoegd na de indicatorberekeningen in het OnCalculate() blok
    //---     
       BuySignal("Iin_MA_Signal_Alert",KoopBuffer,aantal_totaal,vorige_berekend,sluit,spread);
       SellSignal("Iin_MA_Signal_Alert",VerkoopBuffer,aantal_totaal,vorige_berekend,sluit,spread);
    //--- 
    

Waar KoopBuffer en VerkoopBuffer de namen zijn van de indicatorbuffers voor het opslaan van de koop- en verkoop signalen. Lege waarden in de indicatorbuffers moeten worden ingesteld op nul of EMPTY_VALUE.

Er wordt aangenomen dat er slechts één aanroep naar de BuySignal() en SellSignal() functies zal worden gebruikt in het OnCalculate() blok van de indicatorcode.

Fig. 1. Iin_MA_Signal_Alert op de grafiek

Fig. 1. Iin_MA_Signal_Alert op de grafiek


Fig. 2. Iin_MA_Signal_Alert. Genereren van meldingen

Fig. 2. Iin_MA_Signal_Alert. Genereren van meldingen

Gerelateerde berichten

Reactie (0)