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
- 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
- Générer des Signaux de Trading avec MQL5 Wizard : Étoiles du Matin/du Soir et RSI
- MQL5 Wizard : Créez un Expert Advisor avec des Signaux de Trading Basés sur les Étoiles du Matin et du Soir + Stochastique
- Utiliser MQL5 Wizard pour des Signaux de Trading Basés sur les Étoiles du Matin/du Soir + MFI