OnTick vs OnTimer MQL5 : quelle fonction choisir pour votre EA ?
Découvrez les différences fondamentales entre OnTick et OnTimer en MQL5 pour optimiser la réactivité et la performance de votre Expert Advisor. Ce guide vous aide à choisir la fonction idéale selon votre stratégie de trading.
Comprendre le rôle central des événements en MQL5
En MQL5, un Expert Advisor (EA) est un programme qui réagit à des événements spécifiques générés par le terminal MetaTrader 5. Les deux événements les plus utilisés sont l’arrivée d’un nouveau tick (OnTick) et le déclenchement d’une minuterie (OnTimer). Le choix entre ces deux fonctions est crucial car il détermine la manière dont votre EA va interagir avec le marché.
L’événement OnTick est déclenché à chaque fois qu’un nouveau prix est reçu pour le symbole sur lequel l’EA est attaché. Cela peut se produire plusieurs fois par seconde, surtout sur des paires de devises très liquides comme l’EUR/USD. À l’inverse, OnTimer est basé sur une minuterie que vous configurez avec une fréquence fixe, par exemple toutes les 100 millisecondes ou toutes les 5 secondes. Pour un développeur, comprendre le comportement de chaque fonction est la première étape pour éviter des bugs comme des ordres en double ou un manque de réactivité.
La promesse de cet article est simple : vous donner les clés pour décider si votre EA doit utiliser ontick ontimer mql5 ea de manière exclusive, ou s’il peut combiner les deux pour tirer parti de leurs avantages respectifs. Nous allons analyser en détail les cas d’usage, les performances et les pièges à éviter.
OnTick : la réactivité ultime pour les stratégies haute fréquence
La fonction OnTick() est le cœur de la plupart des EA de scalping et de trading algorithmique à haute fréquence. Elle est appelée automatiquement par MetaTrader 5 dès qu’un nouveau tick apparaît sur le graphique. Cela signifie que votre code est exécuté aussi souvent que le marché met à jour les prix. Pour un EA qui doit ouvrir une position en 0.1 seconde après un signal, OnTick est indispensable.
Cependant, cette réactivité a un coût. Si votre EA exécute des calculs lourds (comme des indicateurs personnalisés complexes ou des boucles sur plusieurs symboles) à chaque tick, vous risquez de saturer le thread principal de MetaTrader. Cela peut entraîner des ralentissements, des déconnexions, ou pire, des erreurs d’exécution d’ordres. Un conseil fondamental : gardez votre code OnTick aussi léger que possible. Utilisez des variables statiques pour éviter de recalculer des résultats inchangés, et privilégiez les calculs asynchrones ou différés si nécessaire.
Un autre point important est la gestion des flags. En MQL5, vous pouvez vérifier si un nouveau tick est réellement différent du précédent (via NewTick() ou en comparant les prix). Cela évite d’exécuter une logique de trading si le tick n’apporte aucune information nouvelle. Pour les stratégies qui ne nécessitent pas une réaction à chaque variation de prix, utiliser OnTick peut être un gaspillage de ressources CPU. C’est là que OnTimer devient une alternative sérieuse.
OnTimer : la régularité et la performance pour les stratégies discrètes
La fonction OnTimer() est idéale pour les stratégies qui n’ont pas besoin de réagir à chaque tick. Par exemple, un EA qui ouvre des positions toutes les 5 minutes, ou qui vérifie les conditions de trading une fois par seconde, trouvera en OnTimer un allié pour la performance. Vous définissez l’intervalle de la minuterie via la fonction EventSetTimer() dans OnInit(). L’avantage principal est la prédictibilité : votre code s’exécute à un rythme constant, indépendamment de la volatilité du marché.
Cela réduit considérablement la charge sur le terminal. Imaginez un EA qui analyse 20 indicateurs techniques. Avec OnTick, il ferait cette analyse 100 fois par seconde. Avec OnTimer, vous pouvez la faire toutes les 2 secondes, libérant ainsi des ressources pour d’autres EA ou pour l’interface utilisateur. C’est particulièrement utile si vous tradez plusieurs symboles ou si votre EA tourne sur un VPS avec des ressources limitées.
Cependant, OnTimer a une faiblesse : le risque de manquer un mouvement de prix. Si votre minuterie est réglée sur 1 seconde, et que le prix fait un saut brutal (ex: un news event) en 0.5 seconde, votre EA ne le verra pas immédiatement. Pour les stratégies de tendance ou de swing trading, ce délai est souvent acceptable. Mais pour un scalpeur, c’est rédhibitoire. Le choix entre ontick ontimer mql5 ea dépend donc directement de l’horizon temporel de votre stratégie.
Comparaison pratique : quand utiliser OnTick ou OnTimer ?
Pour vous aider à visualiser les cas d’usage, voici une comparaison directe. OnTick est le roi de la réactivité : il est parfait pour les EA qui ouvrent des positions immédiatement après un signal technique, comme un croisement de moyennes mobiles sur une timeframe de 1 minute. Il est aussi indispensable pour les stratégies de “market making” ou de “grid trading” qui nécessitent une gestion des ordres en temps réel.
OnTimer, de son côté, excelle dans les stratégies de gestion de risque et de routine. Par exemple, un EA qui vérifie le solde du compte toutes les 5 secondes pour ajuster un trailing stop, ou qui exécute un ordre en fin de bougie (sur une timeframe de 15 minutes). Il est également recommandé pour les EA multi-devises, car vous pouvez utiliser une seule minuterie pour gérer plusieurs symboles, alors qu’avec OnTick, vous auriez besoin d’un EA par symbole ou d’une logique complexe.
Il est tout à fait possible de combiner les deux fonctions dans un même EA. Par exemple, utilisez OnTick pour détecter un signal rapide (comme une cassure de niveau) et OnTimer pour effectuer des vérifications périodiques (comme la gestion des stops et des limites). Cette approche hybride est souvent la meilleure solution pour les EA professionnels. Elle permet d’allier la réactivité de OnTick pour l’entrée et la fiabilité de OnTimer pour la sortie et la gestion des positions.
Conseil Pro : Pour un EA de scalping, commencez toujours par OnTick et optimisez le code pour qu’il soit le plus rapide possible. Utilisez #property strict et évitez les appels redondants à des fonctions comme iCustom() à chaque tick. Pour les stratégies de swing ou de tendance, préférez OnTimer avec un intervalle de 500 ms à 2 secondes. Testez toujours votre EA en conditions réelles (ou en tick data) sur un compte démo avant de le passer en live.
Comment implémenter OnTimer dans votre EA MQL5 ?
L’implémentation de OnTimer est simple. Dans votre fonction OnInit(), appelez EventSetTimer(1); pour définir une minuterie de 1 seconde. Ensuite, écrivez votre logique de trading dans la fonction OnTimer(). N’oubliez pas d’arrêter la minuterie dans OnDeinit() avec EventKillTimer(); pour libérer les ressources. Un piège courant est d’oublier de tuer la minuterie, ce qui peut provoquer des fuites mémoire ou des exécutions intempestives après la suppression de l’EA.
Pour les EA qui utilisent OnTick, la structure est encore plus simple : vous n’avez rien à configurer. Cependant, il est fortement recommandé d’ajouter une condition de filtrage pour éviter d’exécuter la logique sur des ticks redondants. Par exemple, utilisez une variable booléenne static bool NewTick = false; et mettez-la à jour en comparant Bid et Ask avec les valeurs précédentes. Cela améliore les performances sans sacrifier la réactivité.
Enfin, pour les débutants, un conseil : commencez avec OnTimer. Il est plus facile à déboguer et votre EA sera plus stable. Une fois que vous maîtrisez les bases du trading algorithmique, migrez vers OnTick pour des stratégies plus agressives. Le choix entre ontick ontimer mql5 ea n’est pas définitif : vous pouvez toujours changer d’approche au fil des optimisations.
Besoin d’un EA sur-mesure ? Demander un devis gratuit
Questions fréquentes
Puis-je utiliser à la fois OnTick et OnTimer dans le même EA ?
Oui, absolument. C’est même une pratique courante pour séparer les tâches. Par exemple, OnTick pour les signaux d’entrée rapides et OnTimer pour la gestion des stops, des limites et la vérification périodique des conditions de marché. Assurez-vous simplement de ne pas créer de conflits (ex: ouverture de deux ordres en même temps) en utilisant des flags de verrouillage.
Quelle est la meilleure fréquence pour OnTimer dans un EA de trading ?
Cela dépend de votre stratégie. Pour un EA de scalping, une fréquence de 100 ms à 500 ms est courante. Pour du swing trading, 1 à 5 secondes suffisent. Évitez de descendre en dessous de 50 ms, car cela peut surcharger le terminal sans réel bénéfice. Testez avec un compte démo pour trouver le bon équilibre entre réactivité et performance.
OnTimer est-il plus fiable que OnTick pour éviter les erreurs d’exécution ?
Oui, généralement. OnTimer offre une exécution plus prévisible et réduit le risque de “race conditions” (situations où plusieurs ticks arrivent en même temps). Cependant, OnTick est plus fiable pour les stratégies qui nécessitent une réaction immédiate aux mouvements de prix. Le choix dépend de votre priorité : la fiabilité de l’exécution ou la réactivité.