Accueil Trading Systématique Publication

Détecter le début d'un nouveau chandelier avec un EA sur MetaTrader 5

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

Lorsque vous utilisez un Système de Trading (EA), chaque fois qu'une nouvelle cotation (un "tick") est reçue par MetaTrader, la fonction de gestion d'événements standard OnTick() est appelée par le terminal. Cependant, il n'existe pas de fonction de gestion d'événements standard pour le début d'un nouveau chandelier.

Pour détecter cela, vous devez surveiller l'heure d'ouverture du chandelier le plus récent. Lorsque celle-ci change, cela signifie qu'un nouveau chandelier a commencé, et vous pouvez réagir à cette situation. Le code ci-dessous, compatible avec MQL4 et MQL5, illustre l'une des méthodes pour y parvenir :

// Gestionnaire d'événements standard pour les ticks
   void OnTick()
   {
      // Vérifiez s'il y a un nouveau chandelier (compatible avec MQL4 et MQL5).
         static datetime dtChandelierCourant   = WRONG_VALUE;
                datetime dtChandelierPrecedent = dtChandelierCourant;
                         dtChandelierCourant   = iTime( _Symbol, _Period, 0 );
                bool     bEvenementNouveauChandelier  = ( dtChandelierCourant != dtChandelierPrecedent );

      // Réagissez à l'événement d'un nouveau chandelier et gérez la situation.
         if( bEvenementNouveauChandelier )
         {
            // Détectez si c'est le premier tick reçu et gérez la situation.
               /* Par exemple, lorsqu'il est appliqué pour la première fois au graphique et que
 le chandelier est quelque part au milieu de son évolution et
 ne représente pas vraiment le début d'un nouveau chandelier. */
               if( dtChandelierPrecedent == WRONG_VALUE )
               {
                  // Faites quelque chose lors du premier tick ou au milieu d'un chandelier ...
               }
               else
               {
                  // Faites quelque chose lorsque qu'un chandelier normal apparaît ...
               };

            // Faites quelque chose indépendamment de la condition précédente ...
         }
         else
         {
            // Faites quelque chose d'autre ...
         };

      // Faites d'autres choses ...
   };

Dans le code précédent, la variable statique garde en mémoire l'heure d'ouverture du chandelier, même lors du retour de la fonction OnTick(). Contrairement à une variable locale normale, elle mémorise son contenu et ne le libère pas en quittant la fonction. C'est la clé pour détecter un changement dans l'heure d'ouverture du chandelier courant.

Il est également important de noter que lorsque le EA est placé sur un graphique pour la première fois, le code précédent réagit comme si le chandelier venait de s'ouvrir. Cette condition nécessite un traitement spécial si la situation doit être gérée différemment.

Enfin, sachez que le code source de toutes mes publications sur CodeBase est désormais également accessible via le MetaEditor dans les Projets Publics sous le nom FMIC.

Articles connexes

Commentaire (0)