iWPRSignAlert : L'indicateur incontournable pour MetaTrader 5

Mike 2016.07.20 23:43 15 0 0
Pièce jointe

Vous cherchez un moyen efficace d'optimiser vos signaux de trading ? L'indicateur iWPRSignAlert est basé sur l'oscillateur classique Williams’ Percent Range, qui détecte les zones de surachat et de survente. Il inclut également des alertes, envoi d'emails et notifications push sur les appareils mobiles, idéal pour rester à jour même en déplacement !

Voici les modifications apportées au code de l'indicateur pour intégrer les alertes, les messages email et les notifications push :

  1. Ajout de nouveaux paramètres d'entrée :
    inputuint NumberofBar=1;// Nombre de barres pour le signalinputbool SoundON=true; // Activer les alertesinputuint NumberofAlerts=2;// Nombre d'alertesinputbool EMailON=false; // Activer l'envoi d'email pour le signalinputbool PushON=false; // Activer l'envoi du signal sur appareils mobiles
  2. Ajout de trois nouvelles fonctions à la fin du code de l'indicateur : BuySignal(), SellSignal() et GetStringTimeframe().
    //+------------------------------------------------------------------+//| Fonction d'achat signal                                             |//+------------------------------------------------------------------+void BuySignal(string SignalSirname, // texte du nom de l'indicateur pour les messages email et pushdouble &BuyArrow[], // buffer de l'indicateur avec les signaux d'achatconstint Rates_total, // le nombre actuel de barresconstint Prev_calculated, // le nombre de barres sur le tick précédentconstdouble &Close[], // prix de clôtureconstint &Spread[]) // spread 
    { 
        //---staticuint 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;
            doubleAsk=Close[index];
            doubleBid=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("BUY signal \n Ask=",Ask,"\n Bid=",Bid,"\n currtime=",text,"\n Symbol=",Symbol()," Period=",sPeriod);
            if(EMailON) SendMail(SignalSirname+": BUY signal alert","BUY signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
            if(PushON) SendNotification(SignalSirname+": BUY signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
        }
    }
    
  3. Ajout d'appels aux fonctions BuySignal() et SellSignal() après les cycles de calcul de l'indicateur dans le bloc OnCalculate() :
    BuySignal("iWPRSign",BuyBuffer,rates_total,prev_calculated,close,spread);
    SellSignal("iWPRSign",SellBuffer,rates_total,prev_calculated,close,spread);
    

BuyBuffer et SellBuffer sont les noms des buffers de l'indicateur pour stocker les signaux d'achat et de vente. Il est important de s'assurer que les valeurs vides dans les buffers de l'indicateur soient soit des zéros, soit EMPTY_VALUE.

On suppose que chaque appel à BuySignal() et SellSignal() sera utilisé une seule fois dans le bloc OnCalculate() du code de l'indicateur.

Fig.1. L'indicateur iWPRSignAlert

Fig.1. L'indicateur iWPRSignAlert sur le graphique

Fig.2. L'indicateur iWPRSignAlert générant des alertes

Fig.2. L'indicateur iWPRSignAlert générant des alertes.

Liste
Commentaire 0