The Trading MentorVotre mentor en trading

Pourquoi la plupart des EAs MT5 échouent en trading réel (et les solutions qui fonctionnent vraiment)

Le 14 mars 2023, l'EUR/USD a chuté de 180 pips en 4 heures après la publication des titres sur l'effondrement de la SVB.

Daniel Harrington

Daniel Harrington

Analyste Trading Senior · MT5 specialist

11 min de lecture

Partager cet article :

Le 14 mars 2023, l'EUR/USD a chuté de 180 pips en 4 heures après la publication des titres sur l'effondrement de la SVB. J'ai vu trois EAs distincts sur mon terminal dérailler complètement : l'un a fait une moyenne à la baisse dans le mouvement, l'autre a inversé trop tôt, et le troisième... a simplement gelé. Tous les trois avaient réussi des backtests de 2 ans avec des ratios de Sharpe supérieurs à 1,8. Ce jour-là m'a coûté de l'argent réel, et cela m'a forcé à repenser tout ce que je croyais savoir sur le trading automatisé. La vérité est que la plupart des EAs MT5 n'échouent pas à cause d'une mauvaise logique. Ils échouent à cause de la façon dont ils ont été construits, testés et déployés.

Backtest d'EA vs trading réel — une courbe de capital parfaite se brise en une réalité chaotique avec un robot cassé

Un taux de réussite de 92 % en backtest ne signifie rien lorsque le slippage, l'élargissement des spreads et la sur-optimisation frappent votre EA sur les marchés réels. Trois de mes EAs sont tombés en panne lors de l'effondrement de la SVB — tous avaient des backtests parfaits.

1

L'illusion du backtesting : pourquoi votre test de qualité à 90 % ne signifie rien

Chaque semaine, je vois quelqu'un publier un backtest sur un forum de trading avec une courbe de capital lisse et déclarer que son EA est prêt à être mis en réel. Le problème n'est pas le résultat. Le problème est ce que le résultat mesure réellement.

Le testeur de stratégie de MT5, même en mode 'Chaque tick basé sur des ticks réels', ne peut pas reproduire le comportement des spreads en direct. Les spreads sur l'EUR/USD pendant la panique de la SVB que j'ai mentionnée ont atteint 8-12 pips chez certains brokers, alors que l'EA avait été construit et testé en supposant un spread fixe de 1,2 pip. Cette seule variable a transformé un trade ciblant 60 pips en une position perdante avant même que le prix ne bouge.

Il y a un paramètre spécifique dans le testeur de stratégie que la plupart des gens ignorent : la case à cocher 'Utiliser la date' combinée au pourcentage de qualité de modélisation. Si vous testez avec une qualité de modélisation de 99 % mais avec des spreads fixes, vous testez un instrument fantaisie. Les marchés réels ont des spreads variables, des requotes (moins courants sur ECN mais toujours présents) et des pics de latence que votre backtest local ne voit jamais.

J'ai exécuté le même EA sur le même ensemble de données de 3 ans avec ces deux configurations :

  • Spread fixe : 1,5 pips, pas de modèle de slippage
  • Spread variable utilisant les données de ticks du broker + slippage aléatoire de 1 à 3 pips

La version à spread fixe a montré un rendement annuel de 34 %. La version à spread variable ? 11 %. Même EA. Même période. La différence est ce que vous vivrez réellement lorsque le trade sera en direct. Utilisez toujours, toujours le modèle d'exécution 'Délais aléatoires' dans le testeur de stratégie. Il est caché dans les paramètres mais c'est ce qui se rapproche le plus du réalisme que la plateforme offre. Vous pouvez le trouver sous Exécution dans les propriétés du testeur, réglez-le sur 50-200 ms pour simuler une latence réelle des ordres.

C'est aussi là que votre calculateur de taille de position devient critique pendant les tests : si vous ne tenez pas compte du spread réel dans votre calcul de risque par trade, vos tailles de position seront fausses dès le départ.

2

Sur-optimisation : la vraie raison pour laquelle les EAs meurent 3 semaines après leur mise en réel

Voici une déclaration à laquelle je m'engage sans réserve : la majorité des EAs de détail sont sur-optimisés. Pas légèrement. Massivement.

La sur-optimisation se produit lorsque vous optimisez les paramètres d'un EA si précisément par rapport aux données historiques que l'EA a mémorisé le passé au lieu d'en tirer des leçons. Le moteur d'optimisation génétique de MT5 est incroyablement puissant, et incroyablement dangereux entre de mauvaises mains. J'ai vu des traders exécuter 50 000 optimisations sur un ensemble de données de 12 mois, choisir l'ensemble de paramètres avec le facteur de profit le plus élevé, et en rester là. Ce n'est pas du développement de stratégie. C'est de l'ajustement de courbe avec des étapes supplémentaires.

Un véritable test de sur-optimisation est le test walk-forward. Vous divisez vos données : optimisez sur les 70 % premiers, puis exécutez un test forward aveugle sur les 30 % restants. Si votre facteur de profit chute de 2,4 à 0,8 sur la période hors échantillon, l'EA est sur-optimisé. Point final. Ne le tradez pas.

Les mathématiques sont importantes ici. Votre population d'optimisation doit être significativement plus petite que les degrés de liberté de votre ensemble de données. Une règle approximative que j'utilise : si vous avez plus d'un paramètre optimisable par 1 000 barres de données, vous êtes déjà en territoire dangereux. Un EA avec 8 paramètres libres testé sur 2 000 barres de données 1H n'est pas une stratégie. C'est un motif mémorisé.

J'ai moi-même fait cette erreur en 2019 avec un EA de retour à la moyenne sur GBP/USD. Optimisé magnifiquement sur les données de 2016-2018. L'ensemble de paramètres comprenait 11 variables. Il a été mis en réel en janvier 2019 et a subi un drawdown de 22 % en 6 semaines avant que je ne le désactive. La leçon a été retenue. Maintenant, je considère toute dégradation du test forward supérieure à 40 % comme un refus catégorique. Si l'EA a généré 10 000 $ sur l'échantillon d'optimisation mais seulement 5 000 $ sur un échantillon forward de taille comparable, c'est à la limite acceptable. S'il a généré 10 000 $ et perdu 3 000 $ en forward, c'est de la camelote.

Pour un aperçu plus approfondi de la façon dont le spread et la qualité d'exécution varient selon l'instrument, le guide EUR/USD vaut la peine d'être lu avant de vous engager sur une paire majeure comme marché principal de votre EA.

Winston

💡 Conseil de Winston

La logique du code retient toute l'attention.

Robot Futurama cassé — quand votre EA rencontre les marchés réels

Votre EA a fonctionné parfaitement sur 10 ans de backtests — puis a rencontré les spreads réels, le slippage et les requotes. Bienvenue dans le trading réel.

3

4 échecs d'exécution dont personne ne parle

La logique du code retient toute l'attention. L'exécution n'en reçoit aucune. C'est l'inverse qui devrait se produire.

Voici les quatre échecs d'exécution les plus courants que j'ai diagnostiqués chez les EAs de clients :

  1. Conditions de concurrence lors de la modification d'ordre : L'EA tente de modifier un stop loss sur le même tick que celui qui déclenche le prix. En MQL5, si vous appelez OrderModify() sans vérifier d'abord les valeurs de retour de OrderSelect(), vous obtiendrez des échecs silencieux, l'ordre ne sera pas modifié, aucune erreur ne sera enregistrée dans votre journal, et votre risque sera désormais incontrôlé.

  2. Ne pas tenir compte des décimales du broker : Certains brokers cotent l'EUR/USD avec 5 décimales, d'autres avec 4. Si votre calcul de stop loss utilise une valeur de pip fixe sans vérifier _Digits, votre SL sera placé 10 fois trop près ou trop loin. J'ai vu cela anéantir des comptes.

  3. Ignorer IsTradeAllowed() : Cette fonction renvoie "false" (faux) lors d'événements d'actualité chez certains brokers, à la clôture du marché, et lorsque le compte a des problèmes de marge en attente. Si votre EA ne vérifie pas cela avant chaque tentative d'ordre, vous aurez des entrées qui échoueront silencieusement tandis que l'EA pensera être en position.

  4. Logique d'entrée basée sur les ticks sur des connexions lentes : Les EAs qui se déclenchent à chaque nouveau tick fonctionnent bien sur un VPS avec une latence de 5 ms. Sur une connexion internet domestique avec une latence de 80 à 150 ms, le tick qui a déclenché votre logique d'entrée peut avoir 3 à 4 ticks d'ancienneté au moment où votre ordre atteint le broker. Vous achetez à un prix qui n'existe plus.

La solution pour le point 4 est de déplacer la logique d'entrée de OnTick() vers OnTradeTransaction() lorsque cela est possible, ou d'ajouter un paramètre de slippage maximal acceptable et de rejeter les exécutions en dehors de cette plage. Ce n'est pas un code glamour. Mais c'est la différence entre un EA fonctionnel en réel et une responsabilité.

Pour placer des ordres proprement sans avoir à gérer des boîtes de dialogue qui introduisent leur propre latence, j'utilise le Drag Trader de Pulsar Terminal lorsque je gère semi-manuellement les positions d'EA ; vous faites glisser directement sur le graphique et les SL/TP se mettent à jour en temps réel, ce qui est réellement plus rapide que n'importe quelle boîte de dialogue lorsque vous êtes en position réelle.

Quatre échecs d'exécution d'EA — slippage, élargissement des spreads, requotes et exécutions partielles

Votre backtest suppose des exécutions parfaites à des prix exacts avec des spreads fixes. Les marchés réels connaissent le slippage, l'élargissement des spreads pendant les actualités, les requotes et les exécutions partielles. Aucun EA n'est immunisé.

4

Le problème du broker (la plupart des traders l'ignorent complètement)

Votre EA ne trade pas le marché. Il trade le flux du marché de votre broker. Cette distinction est énorme.

J'ai exécuté exactement le même EA, sur le même VPS, avec les mêmes paramètres chez trois brokers différents simultanément pendant une période de test de 6 semaines au T3 2022. Les résultats n'étaient pas proches :

  • Broker A (ECN, spread moyen EUR/USD 0,8 pips) : +4,2 % net
  • Broker B (STP, spread moyen 1,8 pips) : +1,1 % net
  • Broker C (teneur de marché, spread fixe 2,0 pips) : -2,3 % net

Même EA. Même marché. Des résultats complètement différents, uniquement en raison du modèle d'exécution et des coûts de spread.

Les EAs de scalping sont les plus sensibles à cela. Un EA ciblant 10 pips avec un stop de 5 pips fonctionne sur un ratio R:R de 2:1. Ajoutez 2 pips de spread et cela devient un objectif de 10 pips avec un risque effectif de 7 pips, ce qui est plus proche de 1,4:1. Les calculs érodent complètement l'avantage. C'est pourquoi les EAs de scalping qui génèrent de l'argent en backtests échouent si constamment en réel ; le backtest utilisait une hypothèse de spread qu'aucun broker réel ne facture pendant les sessions volatiles.

Avant de déployer un EA en réel, exécutez-le pendant un minimum de 3 semaines sur un compte démo avec le broker réel que vous comptez utiliser. Pas la démo d'un autre broker. Pas une simulation de prop firm avec une exécution différente. Votre broker spécifique, votre type de compte spécifique. Vérifiez les journaux d'exécution dans l'onglet Journal de MT5 après chaque trade. Si vous constatez un slippage constant de plus de 1 pip sur les exécutions, l'avantage de votre EA est probablement déjà perdu.

Les revues de sélection de brokers comme la revue IC Markets peuvent vous donner une base de référence pour ce à quoi ressemble réellement l'exécution ECN en pratique.

Winston

💡 Conseil de Winston

Laissez-moi décrire ce que je recherche avant de considérer un EA comme prêt pour de l'argent réel.

Oups — découvrir que votre broker utilise des données de ticks différentes

Différents brokers, différentes données de ticks, différents spreads. Un EA optimisé pour un broker peut complètement échouer sur un autre.

5

À quoi ressemble réellement un EA déployable

Laissez-moi décrire ce que je recherche avant de considérer un EA comme prêt pour de l'argent réel. Ce n'est pas une liste de contrôle que vous imprimez et oubliez. C'est une norme que la plupart des EAs n'atteignent pas.

Premièrement, le backtest doit utiliser des spreads variables, des délais d'exécution aléatoires et une validation walk-forward hors échantillon. La dégradation du test forward doit être inférieure à 40 % sur des longueurs de données comparables. Si vous avez backtesté 3 ans, testez en walk-forward 1 an. Pas 3 mois.

Deuxièmement, l'EA a besoin d'un coupe-circuit de drawdown strict dans le code. Quelque chose comme ceci en MQL5 :

double maxDrawdown = 0.10; // 10% max
double startBalance = AccountInfoDouble(ACCOUNT_BALANCE);
if((startBalance - AccountInfoDouble(ACCOUNT_EQUITY)) / startBalance >= maxDrawdown) {
 // Close all positions and disable EA
 ExpertRemove();
}

C'est basique. Je suis constamment choqué de voir combien d'EAs en production n'en sont pas équipés.

Troisièmement, l'indicateur ATR devrait faire partie du dimensionnement de position de l'EA, et pas seulement de sa logique d'entrée. Un dimensionnement de lot fixe dans un marché à volatilité variable est une recette pour un risque incohérent. L'ATR(14) sur le graphique H1 vous donne une mesure en temps réel de l'ampleur du mouvement du marché. Votre stop loss et votre taille de position devraient s'adapter en conséquence.

Quatrièmement, l'EA doit être testé sur plusieurs régimes de marché, pas seulement un. Un EA optimisé sur le marché en tendance de 2020-2021 sera détruit dans le régime de marché latéral et très volatil de 2022-2023. Utilisez au moins une année en tendance et une année agitée dans votre ensemble de données.

Cinquièmement, je veux voir une simulation de Monte Carlo exécutée sur les résultats du backtest. MT5 ne le fait pas nativement, mais des outils comme StrategyQuant ou même une simulation Excel basique utilisant vos résultats trade par trade peuvent randomiser l'ordre de vos gains et pertes pour vous montrer le drawdown réaliste dans le pire des cas. Si votre pire cas simulé est de 35 % mais que vous n'êtes à l'aise qu'avec 15 %, l'EA est inadapté à votre compte, quelle que soit la qualité de la moyenne.

La plupart des EAs échouent non pas parce que l'idée derrière eux était mauvaise. Ils échouent parce que le processus de validation était paresseux, le code d'exécution n'a pas été testé dans des conditions réelles, et l'environnement du broker a été supposé plutôt que mesuré. Corrigez ces trois choses et vos résultats en réel ressembleront beaucoup plus à ce que vos backtests avaient promis.

Avertissement : Cet article est à des fins éducatives uniquement et ne constitue pas un conseil en investissement. Le trading de forex et de CFDs comporte un risque de perte significatif. Les performances passées ne sont pas indicatives des résultats futurs. Faites toujours vos propres recherches et tenez compte de votre situation financière avant de trader. Ne risquez jamais de l'argent que vous ne pouvez pas vous permettre de perdre.

La leçon du Prof. Winston

Points clés:

  • Un backtest parfait ne signifie rien si l'EA est sur-optimisé par rapport aux données historiques
  • Le slippage, l'élargissement des spreads et les requotes détruisent les EAs qui ne les ont jamais rencontrés lors des backtests
  • Les données de ticks et la vitesse d'exécution de votre broker affectent directement la performance de l'EA — testez sur le broker réel
  • Un EA déployable gère les échecs avec élégance : il gère le slippage, a des limites de drawdown maximales et enregistre tout
Prof. Winston

Questions fréquentes

Q1Combien de données dois-je utiliser pour backtester un EA MT5 avant de le considérer comme valide ?

Au minimum, 3 ans de données de ticks couvrant différentes conditions de marché, au moins une période de forte tendance et une période agitée/latérale. Pour les EAs avec plus de 5 paramètres optimisables, je pousserais cela à 5 ans. Le nombre clé n'est cependant pas le nombre d'années, mais le ratio entre le nombre de paramètres et le nombre de barres testées. Plus d'un paramètre libre par 1 000 barres est déjà un signal d'alarme pour la sur-optimisation. Pour les EAs de scalping sur les graphiques M5, 3 ans pourraient vous donner suffisamment de barres, mais vous devez vérifier que la qualité de vos données de ticks provenant de l'historique de votre broker est réellement complète ; les lacunes dans les données de ticks rendront vos résultats plus propres que la réalité.

Q2Pourquoi mon EA fonctionne-t-il bien en démo mais échoue-t-il en réel avec le même broker ?

C'est plus courant que les gens ne l'admettent. Les comptes démo chez la plupart des brokers utilisent un modèle d'exécution légèrement différent des comptes réels ; plus précisément, les exécutions en démo sont souvent plus propres et plus rapides avec des spreads plus serrés pendant les périodes de faible liquidité. Certains brokers acheminent également les ordres démo et réels via des infrastructures différentes. La façon de tester cela est d'exécuter les deux comptes simultanément pendant 2 à 4 semaines et de comparer les prix d'exécution trade par trade. Si vos exécutions en réel sont constamment 0,5 à 1 pip moins bonnes qu'en démo, c'est une différence de modèle d'exécution et c'est réel. Cela s'accumulera contre vous sur des centaines de trades. Vérifiez également si votre compte réel est STP alors que votre démo est ECN ; cela arrive plus souvent que les brokers ne le souhaitent.

Q3Un EA qui a échoué sur une paire de devises peut-il fonctionner sur une autre ?

Parfois oui, mais vous devez le re-valider complètement sur le nouvel instrument, ne supposez pas que les paramètres se transfèrent. Différentes paires ont des profils de volatilité, des comportements de spread et des schémas de liquidité basés sur les sessions différents. Un EA construit autour du comportement de l'EUR/USD pendant la session de Londres peut être complètement inadapté au GBP/JPY qui a ses propres pics de volatilité pendant le chevauchement Asie/Londres. Vous devrez ré-optimiser (avec précaution, sans sur-optimisation) sur les données de la nouvelle paire, exécuter un nouveau test walk-forward, et idéalement le tester en démo pendant 4 à 6 semaines chez le broker réel. La logique sous-jacente pourrait être transférable. Les valeurs de paramètres spécifiques ne le seront presque certainement pas.

Q4Quelle est la période minimale de test forward avant de mettre un EA sur un compte réel ?

J'utilise 100 trades complétés comme minimum, pas une période de temps. Les périodes de temps sont trompeuses car un marché lent pourrait vous donner 40 trades en 3 mois tandis qu'un marché rapide vous en donne 200. Vous avez besoin d'un échantillon statistiquement significatif de la prise de décision réelle de votre EA. Si votre EA effectue en moyenne 5 trades par semaine, cela représente 20 semaines de trading en démo avant d'envisager de passer en réel, soit environ 5 mois. Je sais que cela semble long. Mais c'est plus court que de se remettre d'un compte grillé. L'autre chose que je vérifie est si les résultats du test forward tombent dans l'intervalle de confiance de Monte Carlo du backtest. Si le drawdown du test forward dépasse le 95e percentile de votre simulation de Monte Carlo, quelque chose a changé sur le marché et l'EA doit être réévalué avant de passer en réel.

Cet article vous a plu ?

Cet article vous a-t-il été utile ?

Cliquez sur une étoile

Commentaires

0/500
...

Gardez une longueur d'avance

Recevez chaque semaine des analyses de marché, des stratégies de trading et des astuces MT5. Pas de spam, désabonnement à tout moment.

Daniel Harrington

À propos de l'auteur

Daniel Harrington

Analyste Trading Senior

Daniel Harrington est analyste trading senior titulaire d'un MScF (Master of Science in Finance) spécialisé en gestion quantitative d'actifs et des risques. Fort de plus de 12 ans d'expérience sur les marchés forex et dérivés, il couvre l'optimisation de la plateforme MT5, les stratégies de trading algorithmique et les conseils pratiques pour les traders particuliers.

Obtenir Pulsar Terminal

Tous ces calculateurs sont intégrés dans Pulsar Terminal avec des données en temps réel de votre compte MT5. Dimensionnement de position en un clic, gestion automatique des risques et calculs instantanés.

Obtenir Pulsar Terminal
Pulsar Terminal — Panneau de trading MT5 avancé

Avertissement sur les risques

Le trading d'instruments financiers comporte des risques importants et peut ne pas convenir à tous les investisseurs. Les performances passées ne garantissent pas les résultats futurs. Ce contenu est fourni à titre éducatif uniquement et ne constitue pas un conseil en investissement. Effectuez toujours vos propres recherches avant de trader.