Accueil > Blog > MQL5 : OnTick ou OnTimer, que choisir pour un EA ?

MQL5Développement d'EAMT5

MQL5 : OnTick ou OnTimer, que choisir pour un EA ?

Publié : 2026-10-29Lecture : env. 3 min
⏱ Cet article reflète les informations à sa date de publication. Les chiffres de performance des EA (PF, DD, rendement annuel) évoluent avec le trading en réel et les revalidations — consultez les derniers chiffres sur les pages des EA. Voir les derniers résultats des EA →

En bref : décider sur la nouvelle bougie, gérer l'horaire avec OnTimer

Commençons par la conclusion. Pour un EA qui décide sur une unité de temps longue comme H1 ou H4, il suffit de prendre la décision de trading au premier tick de la nouvelle bougie. Répéter le même calcul à chaque tick ne fait que consommer du CPU sans changer la décision. En revanche, OnTimer sert aux traitements qui doivent s'exécuter même quand aucun tick n'arrive : écrire l'état de l'EA pendant le week-end, ou nettoyer les ordres à une heure précise, par exemple.

Cela dit, le bon choix dépend de la stratégie. Cet article détaille la différence entre ces deux mécanismes et les points que peut vérifier celui qui choisit un EA.

Comparaison courtiers recommandés →

🎁 Télécharger EA gratuit

📧 Cours gratuit par e-mail (8 e-mails) + pack de 13 indicateurs MT5 réservé aux abonnés

Dès votre inscription, vous recevez un lien de téléchargement vers un pack réservé aux abonnés contenant nos 13 indicateurs MT5 : fichiers compilés (.ex5), code source et guide d'installation. Ensuite, 8 e-mails sur les fondamentaux du trading algorithmique, la bonne lecture d'un backtest et le choix du courtier (un par jour pendant les 5 premiers jours, puis 7, 14 et 30 jours après l'inscription). Vous êtes aussi prévenu avant chaque hausse de prix des versions vendues sur le MQL5 Market (prix de lancement qui augmente par paliers selon les ventes). Sur ce site, nos EA sont gratuits avec un compte réel chez un courtier partenaire.

* Confidentialité strictement protégée. Vous pouvez vous désabonner à tout moment.

Fonctionnement : piloté par les ticks ou par le temps

OnTick (piloté par les ticks)

OnTick est appelé chaque fois qu'un nouveau prix (tick) arrive sur le symbole où tourne l'EA. Lors des périodes agitées, il peut être appelé plusieurs fois par seconde ; pendant le week-end, quand le marché est à l'arrêt, il n'est jamais appelé.

Il faut connaître une particularité : les ticks qui arrivent pendant que le précédent OnTick est encore en cours de traitement ne sont pas mis en file d'attente, ils sont ignorés. Autrement dit, un EA dont chaque exécution est lourde manque des ticks en plein mouvement brutal du marché.

OnTimer (piloté par le temps)

OnTimer est appelé à l'intervalle défini par EventSetTimer(). Il fonctionne indépendamment des mouvements de prix, donc aussi quand le marché est fermé. Un EA ne dispose que d'un seul timer, et si le traitement est encore en cours, l'appel est ignoré de la même façon. De plus, rien ne garantit que l'appel survienne exactement à l'intervalle indiqué.

CritèreOnTickOnTimer
DéclencheurMise à jour du prixÉcoulement d'un laps de temps
Marché ferméNon appeléAppelé
Nombre d'appelsPlus nombreux quand le marché est agitéÀ peu près constant
Usage adaptéDécisions d'entrée et de sortieAgrégations périodiques, tâches à heure fixe
Point d'attentionUn traitement lourd fait manquer des ticksS'exécute même sans nouveau prix

Écrire du code économe en CPU pour les stratégies à basse fréquence

Pour une stratégie qui décide sur H4, la valeur de la bougie clôturée ne change pas, même si OnTick est appelé des milliers de fois pendant les 4 heures que dure une bougie. C'est pourquoi nous adoptons par défaut une structure qui ne laisse passer les traitements lourds que « lorsque la bougie change » :

datetime g_lastBar = 0;

void OnTick()
{
   datetime cur = iTime(_Symbol, PERIOD_H4, 0);
   if(cur == g_lastBar) return;   // rien à faire tant qu'on reste sur la même bougie
   g_lastBar = cur;
   // décision à prendre ici, à partir de la bougie clôturée (shift 1)
}

Il est également important de créer les handles d'indicateurs une seule fois dans OnInit, et de ne pas les recréer à chaque appel d'OnTick. Si vous utilisez OnTimer, appelez EventKillTimer() dans OnDeinit pour arrêter le timer.

Quand plusieurs graphiques avec des EA tournent sur un VPS, ces différences se traduisent en charge CPU. Notre réflexion sur le choix d'un VPS est détaillée dans Infos VPS.

Ce que peut vérifier celui qui choisit un EA

Même sans accès au code source, certains points sont vérifiables dans une certaine mesure :

  • La description et les paramètres : existe-t-il une option du type « décision uniquement sur nouvelle bougie » ?
  • L'utilisation du CPU du VPS : si la charge baisse nettement quand on retire un EA, il est possible qu'il exécute un traitement lourd à chaque tick.
  • Le journal des experts : les mêmes messages se répètent-ils à chaque tick ?
  • Les résultats du testeur : pour un EA qui décide à l'ouverture de la bougie, les résultats en mode « prix d'ouverture uniquement » et en « tous les ticks » ne devraient pas différer beaucoup. Un écart important signifie que l'EA réagit aussi aux mouvements intra-bougie.

Pour les bases de l'installation et du paramétrage d'un EA, consultez Comment configurer un EA.

Limites et précautions

Voyons aussi les aspects moins favorables.

  • Le risque en cours de bougie n'est pas surveillé : en limitant les décisions à la nouvelle bougie, l'EA ne réagit pas aux variations brutales survenant en cours de bougie. Si le stop loss n'est pas protégé par un ordre stop placé avec la position, vous vous exposez à des pertes imprévues.
  • Le décalage de la nouvelle bougie : même si une nouvelle bougie est formée, le traitement ne démarre qu'à l'arrivée du premier tick de cette bougie. Sur les symboles ou les périodes peu actifs, la décision peut donc survenir plus tard que le début de la bougie.
  • OnTimer diverge facilement entre testeur et conditions réelles : dans le testeur, le timer est appelé selon une heure virtuelle, de sorte que les intervalles ne correspondent pas forcément à ceux d'un compte réel.
  • Un traitement léger ne change pas la performance : réduire la charge CPU ne rend pas l'EA plus gagnant. La qualité d'une stratégie est une tout autre question.

Pour un EA H4 à faible nombre de trades comme ETHEREUM EA, ces différences de conception sont d'autant plus difficiles à percevoir. Les possibilités de vérification depuis l'extérieur restent toutefois limitées. Nous ne pouvons nous prononcer avec certitude que sur le code que nous avons nous-mêmes écrit.

Résumé

  • OnTick est appelé à l'arrivée d'un prix, OnTimer à intervalle régulier.
  • Les événements arrivant pendant un traitement ne sont pas mis en file d'attente, ils sont ignorés. Un traitement lourd fait donc manquer des événements.
  • Pour une stratégie à basse fréquence, ne décider qu'à la nouvelle bougie évite de gaspiller du CPU.
  • Pour les traitements à exécuter aussi en l'absence de ticks, utilisez OnTimer.
  • Le risque en cours de bougie se couvre avec des ordres stop. Un traitement léger n'améliore pas la performance.
  • D'autres conseils sont rassemblés dans Conseils EA et MT5.

📧 Cours gratuit par e-mail (8 e-mails) + pack de 13 indicateurs MT5 réservé aux abonnés

Dès votre inscription, vous recevez un lien de téléchargement vers un pack réservé aux abonnés contenant nos 13 indicateurs MT5 : fichiers compilés (.ex5), code source et guide d'installation. Ensuite, 8 e-mails sur les fondamentaux du trading algorithmique, la bonne lecture d'un backtest et le choix du courtier (un par jour pendant les 5 premiers jours, puis 7, 14 et 30 jours après l'inscription). Vous êtes aussi prévenu avant chaque hausse de prix des versions vendues sur le MQL5 Market (prix de lancement qui augmente par paliers selon les ventes). Sur ce site, nos EA sont gratuits avec un compte réel chez un courtier partenaire.

* Confidentialité strictement protégée. Vous pouvez vous désabonner à tout moment.

Une question sur les EA ou le Forex ?

Vous pouvez la publier sur le forum de trading Nattzy (inscription gratuite). Les questions qui dépassent cet article sont aussi les bienvenues : réglages d'EA, choix du courtier, etc.

Poser ma question sur Nattzy ↗

Commentaires et questions