Auteur réel :
Ramdass - Conversion uniquement
Le BykovTrend est un indicateur de sémaphore de signal qui inclut des alertes, des envois d'emails et des notifications push sur vos appareils mobiles.
Voici les modifications apportées au code de l'indicateur pour mettre en place ces alertes, emails et notifications push :
- Ajout de nouveaux paramètres d'entrée :
input uint NombreDeBar=1;// Nombre de bar pour le signal input bool SonON=true; // Activer les alertes input uint NombreDAlertes=2;// Nombre d'alertes input bool EmailON=false; // Activer l'envoi d'email pour le signal input bool PushON=false; // Activer l'envoi du signal sur les appareils mobiles
- Ajout de trois nouvelles fonctions à la fin du code de l'indicateur : BuySignal(), SellSignal() et GetStringTimeframe()
//+------------------------------------------------------------------+ //| Fonction de signal d'achat | //+------------------------------------------------------------------+ void BuySignal(string NomDuSignal, // nom de l'indicateur pour les messages email et push double &FlècheAchat[], // tampon de l'indicateur avec les signaux d'achat const int TotalDesBarres, // nombre actuel de barres const int Précédent_calculé, // nombre de barres au tick précédent const double &Close[], // prix de clôture const int &Spread[]) // spread { //--- static uint compteur=0; if(TotalDesBarres!=Précédent_calculé) compteur=0; bool SignalAchat=false; bool TestSérie=ArrayGetAsSeries(FlècheAchat); int index; if(TestSérie) index=int(NombreDeBar); else index=TotalDesBarres-int(NombreDeBar)-1; if(NormalizeDouble(FlècheAchat[index],_Digits) && FlècheAchat[index]!=EMPTY_VALUE) SignalAchat=true; if(SignalAchat && compteur<=NombreDAlertes) { compteur++; MqlDateTime tm; TimeToStruct(TimeCurrent(),tm); string texte=TimeToString(TimeCurrent(),TIME_DATE)+" "+string(tm.hour)+":"+string(tm.min); TestSérie=ArrayGetAsSeries(Close); if(TestSérie) index=int(NombreDeBar); else index=TotalDesBarres-int(NombreDeBar)-1; double Ask=Close[index]; double Bid=Close[index]; TestSérie=ArrayGetAsSeries(Spread); if(TestSérie) index=int(NombreDeBar); else index=TotalDesBarres-int(NombreDeBar)-1; Bid+=Spread[index]; string sAsk=DoubleToString(Ask,_Digits); string sBid=DoubleToString(Bid,_Digits); string sPériode=GetStringTimeframe(ChartPeriod()); if(SonON) Alert("Signal d'ACHAT Ask=",Ask," Bid=",Bid," temps actuel=",texte," Symbole=",Symbol()," Période=",sPériode); if(EmailON) SendMail(NomDuSignal+": alerte de signal d'ACHAT","Signal d'ACHAT à Ask="+sAsk+", Bid="+sBid+", Date="+texte+" Symbole="+Symbol()+" Période="+sPériode); if(PushON) SendNotification(NomDuSignal+": Signal d'ACHAT à Ask="+sAsk+", Bid="+sBid+", Date="+texte+" Symbole="+Symbol()+" Période="+sPériode); } //--- } //+------------------------------------------------------------------+ //| Fonction de signal de vente | //+------------------------------------------------------------------+ void SellSignal(string NomDuSignal, // nom de l'indicateur pour les messages email et push double &FlècheVente[], // tampon de l'indicateur avec les signaux de vente const int TotalDesBarres, // nombre actuel de barres const int Précédent_calculé, // nombre de barres au tick précédent const double &Close[], // prix de clôture const int &Spread[]) // spread { //--- static uint compteur=0; if(TotalDesBarres!=Précédent_calculé) compteur=0; bool SignalVente=false; bool TestSérie=ArrayGetAsSeries(FlècheVente); int index; if(TestSérie) index=int(NombreDeBar); else index=TotalDesBarres-int(NombreDeBar)-1; if(NormalizeDouble(FlècheVente[index],_Digits) && FlècheVente[index]!=EMPTY_VALUE) SignalVente=true; if(SignalVente && compteur<=NombreDAlertes) { compteur++; MqlDateTime tm; TimeToStruct(TimeCurrent(),tm); string texte=TimeToString(TimeCurrent(),TIME_DATE)+" "+string(tm.hour)+":"+string(tm.min); TestSérie=ArrayGetAsSeries(Close); if(TestSérie) index=int(NombreDeBar); else index=TotalDesBarres-int(NombreDeBar)-1; double Ask=Close[index]; double Bid=Close[index]; TestSérie=ArrayGetAsSeries(Spread); if(TestSérie) index=int(NombreDeBar); else index=TotalDesBarres-int(NombreDeBar)-1; Bid+=Spread[index]; string sAsk=DoubleToString(Ask,_Digits); string sBid=DoubleToString(Bid,_Digits); string sPériode=GetStringTimeframe(ChartPeriod()); if(SonON) Alert("Signal de VENTE Ask=",Ask," Bid=",Bid," temps actuel=",texte," Symbole=",Symbol()," Période=",sPériode); if(EmailON) SendMail(NomDuSignal+": alerte de signal de VENTE","Signal de VENTE à Ask="+sAsk+", Bid="+sBid+", Date="+texte+" Symbole="+Symbol()+" Période="+sPériode); if(PushON) SendNotification(NomDuSignal+": Signal de VENTE à Ask="+sAsk+", Bid="+sBid+", Date="+texte+" Symbole="+Symbol()+" Période="+sPériode); } //--- } //+------------------------------------------------------------------+ //| Récupérer la période sous forme de chaîne | //+------------------------------------------------------------------+ string GetStringTimeframe(ENUM_TIMEFRAMES timeframe) { //---- return(StringSubstr(EnumToString(timeframe),7,-1)); //---- }
- Ajout d'appels à BuySignal() et SellSignal() après les cycles de calcul de l'indicateur dans le bloc OnCalculate()
//--- BuySignal("BykovTrendAlert",FlècheAchat,total_des_barres,précédent_calculé,close,spread); SellSignal("BykovTrendAlert",FlècheVente,total_des_barres,précédent_calculé,close,spread); //---
Où FlècheAchat et FlècheVente sont les noms des tampons de l'indicateur pour stocker les signaux d'achat et de vente. Les valeurs vides dans les tampons de l'indicateur doivent être soit des zéros soit des EMPTY_VALUE.
On suppose qu'un seul appel aux fonctions BuySignal() et SellSignal() sera utilisé dans le bloc OnCalculate() du code de l'indicateur.
Cet indicateur a été initialement implémenté en MQL4 et publié dans la Base de Code le 28.09.2007.

Fig1. L'indicateur BykovTrendAlert sur le graphique
Fig.2. L'indicateur BykovTrendAlert Génération d'alertes.
Articles connexes
- Découvrez l'indicateur Tymen STARC Bands MTF pour MetaTrader 5
- Découvrez le 3ème Génération XMA : L'indicateur essentiel pour MetaTrader 5
- Améliorez vos graphiques avec ClearView : Indicateurs et modèles pour MetaTrader 5
- Découvrez l'indicateur 3 en 1 Stochastic pour MetaTrader 5
- Découvrez l'Indicateur Donchian Ultimate pour MT5 : Un Outil Indispensable pour les Traders
