Auteur : EarnForex
L'indicateur BeginnerAlert est un outil très pratique pour les traders utilisant MetaTrader 5. Il affiche les extrêmes de tendance (maximums et minimums), qui peuvent servir de points de support et de résistance. Cela vous aide à déterminer le canal de la tendance actuelle, et il est équipé d'alertes qui envoient des notifications par e-mail et des push notifications sur vos appareils mobiles.
C'est un indicateur simple qui utilise une période définie pour identifier les minimums et maximums, les marquant avec des points sur votre graphique.
Pour intégrer les alertes, les e-mails et les notifications push, plusieurs modifications ont été apportées au code de l’indicateur :
- Ajout de nouveaux paramètres d'entrée :
input uint NombreDeBarre=1;// Nombre de barres 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'e-mails pour le signal input bool PushON=false; // Activer l'envoi de signaux sur les appareils mobiles
- Ajout de trois nouvelles fonctions à la fin du code de l’indicateur : BuySignal(), SellSignal() et GetStringTimeframe():
//+------------------------------------------------------------------+ //| Fonction signal d'achat | //+------------------------------------------------------------------+ void BuySignal(string NomDuSignal, // texte du nom de l'indicateur pour les e-mails et notifications double &FlècheAchat[], // tampon indicateur avec les signaux d'achat const int Total_Barres, // nombre actuel de barres const int Précédent_calculé, // nombre de barres sur le tick précédent const double &Close[], // prix de clôture const int &Spread[]) // spread { //--- static uint compteur=0; if(Total_Barres!=Précédent_calculé) compteur=0; bool SignalAchat=false; bool TestSérie=ArrayGetAsSeries(FlècheAchat); int index; if(TestSérie) index=int(NombreDeBarre); else index=Total_Barres-int(NombreDeBarre)-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(NombreDeBarre); else index=Total_Barres-int(NombreDeBarre)-1; double Ask=Close[index]; double Bid=Close[index]; TestSérie=ArrayGetAsSeries(Spread); if(TestSérie) index=int(NombreDeBarre); else index=Total_Barres-int(NombreDeBarre)-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 signal de vente | //+------------------------------------------------------------------+ void SellSignal(string NomDuSignal, // texte du nom de l'indicateur pour les e-mails et notifications double &FlècheVente[], // tampon indicateur avec les signaux de vente const int Total_Barres, // nombre actuel de barres const int Précédent_calculé, // nombre de barres sur le tick précédent const double &Close[], // prix de clôture const int &Spread[]) // spread { //--- static uint compteur=0; if(Total_Barres!=Précédent_calculé) compteur=0; bool SignalVente=false; bool TestSérie=ArrayGetAsSeries(FlècheVente); int index; if(TestSérie) index=int(NombreDeBarre); else index=Total_Barres-int(NombreDeBarre)-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(NombreDeBarre); else index=Total_Barres-int(NombreDeBarre)-1; double Ask=Close[index]; double Bid=Close[index]; TestSérie=ArrayGetAsSeries(Spread); if(TestSérie) index=int(NombreDeBarre); else index=Total_Barres-int(NombreDeBarre)-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ération de la période sous forme de chaîne | //+------------------------------------------------------------------+ string GetStringTimeframe(ENUM_TIMEFRAMES timeframe) { //---- return(StringSubstr(EnumToString(timeframe),7,-1)); //---- }
- Ajout d'appels aux fonctions BuySignal() et SellSignal() après les cycles de calcul de l’indicateur dans le bloc OnCalculate():
//--- BuySignal("BeginnerAlert",FlècheAchat,total_barres,précédent_calculé,Close,spread); SellSignal("BeginnerAlert",FlècheVente,total_barres,précédent_calculé,Close,spread); //---
Les 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 définies soit sur zéro, soit sur EMPTY_VALUE.
Il est prévu que seul un appel aux fonctions BuySignal() et SellSignal() soit utilisé dans le bloc OnCalculate() du code de l’indicateur.
À l'origine, cet indicateur a été écrit en MQL4 et a été publié pour la première fois dans la Base de Code le 03.09.2008.

Fig1. L'indicateur BeginnerAlert sur le graphique

Fig.2. L'indicateur BeginnerAlert générant des alertes.
Articles connexes
- Découvrez l'indicateur Tymen STARC Bands MTF 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
- Découvrez le 3XMA_Ichimoku : Un Indicateur Incontournable pour MetaTrader 5
- Découvrez l'indicateur Ultra Spearman Rank Correlation pour MetaTrader 5