Dans le monde du trading, savoir quand commence une nouvelle bougie peut faire toute la différence. Pour un Expert Advisor (EA), à chaque fois qu'un nouveau tick arrive, le terminal MetaTrader appelle la fonction de gestion d'événements par défaut OnTick(). Cependant, il n'existe pas de fonction par défaut pour détecter l'ouverture d'une nouvelle bougie.
Pour y parvenir, il faut surveiller le temps d'ouverture de la bougie la plus récente. Dès que ce temps change, cela signifie qu'une nouvelle bougie a commencé. Vous pouvez alors réagir et traiter cet événement. Voici un exemple de code, compatible avec MQL4 et MQL5, démontrant comment cela peut être réalisé :
// Gestionnaire d'événements par défaut pour les ticks void OnTick() { // Vérifier la nouvelle bougie (compatible avec MQL4 et MQL5). static datetime dtBarCurrent = WRONG_VALUE; datetime dtBarPrevious = dtBarCurrent; dtBarCurrent = iTime( _Symbol, _Period, 0 ); bool bNewBarEvent = ( dtBarCurrent != dtBarPrevious ); // Réagir à un événement de nouvelle bougie et le traiter. if( bNewBarEvent ) { // Détecter si c'est le premier tick reçu et le traiter. /* Par exemple, lorsqu'il est d'abord attaché à un graphique et que la bougie est quelque part au milieu de son évolution et ce n'est pas vraiment le début d'une nouvelle bougie. */ if( dtBarPrevious == WRONG_VALUE ) { // Faire quelque chose lors du premier tick ou au milieu de la bougie ... } else { // Faire quelque chose lorsque la bougie normale commence ... }; // Faire quelque chose indépendamment de la condition ci-dessus ... } else { // Faire autre chose ... }; // Faire d'autres choses ... };
Dans le code ci-dessus, la variable statique permet de garder en mémoire le temps d'ouverture de la bougie, même lorsque l'on sort de la fonction OnTick(). Contrairement à une variable locale normale, elle mémorise son contenu et ne le libère pas à la sortie de la fonction. C'est la clé pour détecter un changement dans le temps d'ouverture de la bougie actuelle.
Il est également important de noter que lorsque l'EA est placé pour la première fois sur un graphique, le code ci-dessus réagit comme si la bougie venait juste de s'ouvrir. Cette situation nécessite un traitement particulier si elle doit être gérée différemment.
Et n'oubliez pas, tous mes codes publiés sur la CodeBase sont désormais également disponibles dans l'onglet "Projets publics" de MetaEditor sous le nom "FMIC".
Articles connexes
- Utiliser MQL5 Wizard pour Créer un Expert Advisor Basé sur les Modèles de Chandeliers Englobants et MFI
- Développez un Expert Advisor avec MQL5 : Signaux de Trading 3 Corbeaux Noirs / 3 Soldats Blancs + RSI
- Découvrez Exp5-VirtualTradePad : L'outil incontournable pour MetaTrader 5
- Découvrez l'Expert Advisor exp_iCustom_v5 pour MetaTrader 4
- Générer des Signaux de Trading avec MQL5 Wizard : Étoiles du Matin/du Soir et RSI