Accueil Trading Systématique Publication

Détection d'une Nouvelle Bougie dans MetaTrader 5 : Code Simple

Pièce jointe
49018.zip (977 bytes, Télécharger 0 fois)

Salut les traders ! Aujourd'hui, je vais vous présenter un code simple pour découvrir lorsqu'une nouvelle bougie est reçue dans MetaTrader 5.

Le principe de ce code est assez basique. D'abord, il stocke l'heure de la bougie précédente. Ensuite, il ajoute 60 secondes (ce qui correspond à 1 minute, mais vous pouvez ajuster le temps selon vos besoins) à l'heure de cette bougie pour obtenir la valeur de fermeture de la bougie actuelle.

Une fois que :

l'heure actuelle = valeur de fermeture de la bougie actuelle, cela signifie qu'une nouvelle bougie est reçue ou que la bougie actuelle est clôturée.

Dans ce code, le drapeau (la variable booléenne NewBarReceived) empêche les appels multiples de ce bloc de code. Cela signifie que ce bloc s'exécute une seule fois par bougie. La fonction Comment(); et playsound("ok.wav"); sont utilisées pour vérifier l'exactitude du bloc de code. Vous pouvez les retirer si vous le souhaitez.

Le drapeau est réinitialisé à faux une fois que l'heure actuelle dépasse la valeur de fermeture de la bougie actuelle, afin de vérifier l'arrivée de la prochaine bougie (regardez les commentaires pour plus de détails).

//+------------------------------------------------------------------+
//|                                               Détection Nouvelle Bougie.mq5 |
//|                                                  par H A T Lakmal |
//|                                                   https://t.me/Lakmal846 |
//+------------------------------------------------------------------+

bool NewBarReceived = false; // Drapeau de contrôle.

//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'expert                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- créer un timer
   EventSetTimer(60);

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Fonction de désinitialisation de l'expert                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- détruire le timer
   EventKillTimer();

  }


//+------------------------------------------------------------------+
//| Fonction de tick de l'expert                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   datetime TimePreviousBar = iTime(_Symbol,PERIOD_M1,1);
   datetime TimeCurrentClose = TimePreviousBar + 60; // Heure de fermeture de la bougie actuelle.
   datetime Time_Current = TimeCurrent();

   if(Time_Current == TimeCurrentClose && NewBarReceived == false)
     {
      PlaySound("ok.wav");   // Pour vérifier le fonctionnement.
      NewBarReceived = true; // Mettre à jour le drapeau pour éviter les appels multiples.


      // Votre code ici ----- (Faites quelque chose)

     }
   else
      if(Time_Current > TimeCurrentClose)
        {
         NewBarReceived = false; // Réinitialiser le drapeau pour l'ouverture de la prochaine bougie.


         // Votre code ici ----- (Faites quelque chose)


        }


   Comment("
" +  "
" +  "Heure de la bougie actuelle -: " + TimeToString(TimePreviousBar,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +
           "
" + "Heure de fermeture actuelle -: " +TimeToString(TimeCurrentClose,TIME_DATE|TIME_MINUTES|TIME_SECONDS) +
           "
" + "Heure actuelle -: " + TimeToString(Time_Current,TIME_DATE|TIME_MINUTES|TIME_SECONDS) + 
           "
" +"
" + "Nouvelle bougie reçue -: " + NewBarReceived); 
           // Pour vérifier les calculs


  }
//+------------------------------------------------------------------+
//| Fonction timer                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---

  }
//+------------------------------------------------------------------+
//| Fonction de trading                                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
//---

  }
//+------------------------------------------------------------------+
//| Fonction d'événement de graphique                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---

  }
//+------------------------------------------------------------------+

 

Articles connexes

Commentaire (0)