Créez Votre Premier Robot Forex MQL5
Imaginez votre stratégie de trading s'exécuter 24h/24, 5j/7, sans émotion ni fatigue. Ce guide simplifie la complexité de MQL5 et propose une approche pratique pour créer votre premier robot de trading fonctionnel et conscient des risques.
Kenji Watanabe
Responsable Analyse Technique

Imaginez votre stratégie de trading s'exécuter parfaitement, 24h/24 et 5j/7, sans émotion, fatigue, ou le besoin de surveiller constamment votre écran. Ce n'est pas un rêve lointain pour les programmeurs avancés ; c'est le pouvoir du trading automatisé, accessible via le langage MQL5 de MetaTrader 5. Pour les traders intermédiaires cherchant à passer au niveau supérieur, traduire une stratégie manuelle en un Expert Advisor (EA) peut sembler intimidant. Par où commencer pour faire le pont entre votre idée de trading et un code exécutable ? Ce guide simplifie la complexité et propose une approche pratique pour créer votre tout premier robot de trading MQL5 fonctionnel et conscient des risques. Nous allons démystifier l'environnement MQL5, vous guider à travers les structures de codage essentielles et vous donner les moyens d'automatiser votre trading en toute confiance, même si vous n'avez jamais écrit une seule ligne de code.
Maîtriser MQL5 : Les fondations de votre robot
Avant de pouvoir commander votre robot, vous devez comprendre son langage et son environnement. MQL5 (MetaQuotes Language 5) est le langage de programmation natif de MetaTrader 5. C'est ce qui vous permet de traduire vos règles de trading en instructions que la plateforme peut exécuter automatiquement. Considérez-le comme le cerveau derrière la force de votre robot.
Comprendre les Expert Advisors (EAs)
Un Expert Advisor, ou EA, n'est qu'un nom sophistiqué pour un robot de trading écrit en MQL5. Il s'attache à un graphique spécifique dans votre terminal MT5 et s'exécute à chaque tick de prix entrant. Son seul but est de surveiller le marché selon vos règles prédéfinies et d'exécuter des trades en votre nom — ouvrir, gérer et clôturer des positions sans votre intervention directe.
Naviguer dans MetaEditor & MT5
Votre centre de commande pour le codage est le MetaEditor. Vous pouvez l'ouvrir directement depuis votre terminal MT5 en cliquant sur l'icône 'IDE' ou en appuyant sur F4. C'est là que vous écrirez, modifierez et compilerez votre code MQL5. Lorsque vous compilez votre code (en cliquant sur le bouton 'Compiler'), cela crée un fichier exécutable que MT5 peut comprendre et exécuter. Vos EAs compilés apparaîtront dans la fenêtre 'Navigateur' de MT5 sous la section 'Expert Advisors'. De là, il vous suffit de le glisser-déposer sur un graphique pour lui donner vie.
Le cycle de vie principal : OnInit, OnTick, OnDeinit
Chaque EA fonctionnel est construit autour de trois fonctions d'événement critiques. Les comprendre est la clé pour construire un robot stable.
OnInit()- La configuration : Cette fonction s'exécute une seule fois lorsque l'EA est initialisé pour la première fois (c'est-à-dire lorsque vous le déposez sur un graphique). Elle est parfaite pour les tâches de configuration uniques comme définir des variables initiales, afficher un message de bienvenue ou vérifier si l'environnement de trading est prêt.OnTick()- La boucle principale : C'est le cœur de votre EA. La fonctionOnTick()s'exécute à chaque fois qu'un nouveau tick de prix arrive pour le symbole auquel votre EA est attaché. Toute votre logique de trading principale — vérifier les valeurs des indicateurs, rechercher les conditions d'entrée/sortie et gérer les trades ouverts — se trouve ici. C'est là que votre stratégie prend vraiment vie.OnDeinit()- Le nettoyage : Cette fonction s'exécute une fois lorsque l'EA est retiré du graphique ou que le terminal est fermé. Elle est utilisée pour les tâches de nettoyage, comme supprimer des objets graphiques du graphique ou envoyer une dernière mise à jour de statut.
Votre robot n'exécute pas constamment une boucle frénétique ; il est piloté par les événements. Il attend patiemment un nouveau tick, exécute la logique dans OnTick(), puis attend à nouveau. Cette efficacité est ce qui rend le trading automatisé si puissant.
Automatiser les trades : Ouvrir, Modifier, Clôturer

Passons maintenant à la partie excitante : faire en sorte que votre robot fasse réellement quelque chose. MQL5 utilise un système de requêtes structurées pour envoyer des ordres de trading. Vous remplissez une structure de 'requête' avec tous les détails du trade, puis vous l'envoyez à l'aide d'une commande. Décortiquons cela.
Envoyer de nouveaux ordres avec OrderSend
Pour ouvrir un trade, vous utiliserez la fonction OrderSend(). D'abord, vous devez remplir la structure MqlTradeRequest. Cela semble complexe, mais ce n'est qu'une liste de détails pour votre ordre.
Voici les paramètres essentiels que vous devrez remplir :
action: Le type d'action (par ex.,TRADE_ACTION_DEALpour un ordre au marché).symbol: La paire de devises (par ex.,_Symbolpour utiliser le symbole du graphique).volume: La taille du lot (par ex.,0.10).type: Le type d'ordre (par ex.,ORDER_TYPE_BUYouORDER_TYPE_SELL).price: Le prix d'entrée. Pour un ordre au marché, utilisezSymbolInfoDouble(_Symbol, SYMBOL_ASK)pour les achats etSYMBOL_BIDpour les ventes.sl: Le prix du Stop Loss.tp: Le prix du Take Profit.magic: Un numéro unique pour identifier les trades de votre EA. C'est crucial pour que votre robot n'interfère pas avec vos trades manuels ou d'autres EAs !
Exemple de code (pour un ordre d'achat) :
Ajuster les positions : OrderModify
Besoin de suivre votre stop loss ou de changer votre take profit ? OrderModify() est votre outil. Le processus est similaire : vous identifiez la position que vous souhaitez modifier (en utilisant son numéro de ticket) puis vous envoyez une requête avec les nouvelles valeurs de SL et/ou TP.
Sortir des trades : OrderClose
Clôturer un trade est presque identique à en ouvrir un, mais vous spécifiez le numéro de ticket de la position et utilisez un type d'ordre opposé (ORDER_TYPE_SELL pour clôturer un achat, et vice versa). Une manière plus simple est de définir le champ position dans votre requête avec le numéro de ticket du trade que vous voulez clôturer. Le système est assez intelligent pour comprendre le reste.
Conseil de pro : Vérifiez toujours le
result.retcodeaprès avoir envoyé un ordre. Ce code de retour vous indique si l'ordre a réussi. Sinon, vous pouvez imprimer le message d'erreur dans votre journal pour déboguer ce qui n'a pas fonctionné. Une gestion basique des erreurs est la marque d'un EA robuste.
Coder votre stratégie : Indicateurs & Conditions
Un EA sans stratégie n'est qu'une machine à passer des ordres. La véritable intelligence vient de la traduction de vos règles d'analyse technique en code. MQL5 rend étonnamment facile l'accès aux données de centaines d'indicateurs intégrés.

Accéder aux indicateurs intégrés
La plupart des indicateurs standards ont une fonction correspondante en MQL5, commençant généralement par 'i'. Par exemple :
iMA(): Moyenne MobileiRSI(): Relative Strength IndexiMACD(): Moving Average Convergence DivergenceiStochastic(): Oscillateur Stochastique
Ces fonctions retournent un 'handle', qui est comme un pointeur vers les données de l'indicateur. Vous utilisez ensuite une autre fonction, CopyBuffer(), pour copier les valeurs de l'indicateur (comme la ligne de la MM ou la valeur du RSI) pour des barres spécifiques dans un tableau avec lequel vous pouvez travailler.
Créer des signaux de trading simples
Une fois que vous avez les données de l'indicateur, vous pouvez utiliser de simples instructions if pour définir vos signaux de trading. Par exemple, une stratégie RSI de base pourrait être :
- Signal d'achat :
if (rsi_value < 30) - Signal de vente :
if (rsi_value > 70)
La combinaison d'indicateurs peut créer des signaux plus robustes. Par exemple, vous pourriez vouloir apprendre à combiner intelligemment les indicateurs forex pour réduire le bruit du marché, une compétence clé pour tout trader automatisé.
Construire un croisement de moyennes mobiles
Une stratégie classique à automatiser est le croisement de moyennes mobiles (MM). La logique est simple : lorsqu'une MM rapide croise au-dessus d'une MM lente, c'est un signal d'achat. Lorsqu'elle croise en dessous, c'est un signal de vente. Voici comment vous pourriez coder cette logique à l'intérieur de votre fonction OnTick().
Exemple : Logique de croisement de MM
Dans ce code,
fastMA[1]est la valeur de la MM rapide sur la barre précédente, etfastMA[0]est sa valeur sur la barre actuelle, la plus récente. Cela nous permet de détecter le moment exact où le croisement se produit.
Gestion intelligente des risques : L'essentiel pour votre robot
Une stratégie rentable peut être anéantie par une mauvaise gestion des risques. Votre EA doit avoir des règles inflexibles pour protéger votre capital. Heureusement, MQL5 vous donne tous les outils nécessaires pour construire un robot conscient des risques.
Coder en dur le Stop Loss & le Take Profit
La forme la plus élémentaire de gestion des risques consiste à définir un stop loss (SL) et un take profit (TP) sur chaque trade. Comme nous l'avons vu dans l'exemple OrderSend, la structure MqlTradeRequest a des champs spécifiques pour sl et tp. N'envoyez jamais, au grand jamais, un ordre sans eux. C'est votre première et plus importante ligne de défense contre les mouvements de marché inattendus.
![A diagram showing the logic for a Moving Average Crossover. On the left, a chart shows a fast MA crossing above a slow MA. On the right, a simple logic tree shows 'Is fastMA[1] < slowMA[1]?' and 'Is fastMA[0] > slowMA[0]?' leading to a 'BUY' signal.](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2F1tyytg47%2Fproduction%2Ffbc10e9c2a9c1570894c26d67da6c3c1fc9c4833-2400x1792.png%3Fw%3D800%26fm%3Dwebp%26q%3D80&w=3840&q=75)
Dimensionnement dynamique des positions
Au lieu de trader une taille de lot fixe comme 0,10 sur chaque trade, une approche plus intelligente consiste à calculer la taille de votre position en fonction d'un pourcentage fixe du capital de votre compte. Cela signifie que vous risquez moins lorsque votre compte est en drawdown et plus lorsqu'il est en croissance.
Voici une formule simple :
Taille du lot = (Capital du compte * Pourcentage de risque) / (Stop Loss en points * Valeur par point)
Exemple :
Taille du lot = (10000 * 0.01) / (500 * 1) = 100 / 500 = 0,20 lots
Vous pouvez programmer ce calcul directement dans votre EA pour rendre sa gestion des risques dynamique et réactive. Bien qu'il s'agisse d'une approche de base, des modèles de dimensionnement plus avancés existent, que vous pouvez explorer dans des sujets comme l'affrontement entre le dimensionnement Martingale et Anti-Martingale.
Éviter les pièges courants en matière de risque
Voici quelques règles rapides pour construire un robot plus sûr :
- Utilisez un Numéro Magique : Attribuez toujours un numéro magique unique aux trades de votre EA. Cela l'empêche de clôturer accidentellement un trade que vous avez ouvert manuellement.
- Limitez les trades ouverts : Codez une vérification pour vous assurer que l'EA n'ouvre pas plus d'un certain nombre de trades à la fois (
PositionsTotal()). - Vérifiez le Spread : Avant d'ouvrir un trade, vérifiez si le spread actuel est trop large. Des spreads élevés peuvent tuer la rentabilité d'une stratégie. Vous pouvez obtenir cette information avec
SymbolInfoInteger(_Symbol, SYMBOL_SPREAD).
Pour des détails plus approfondis, la documentation officielle MQL5 sur les fonctions de trading est une excellente ressource faisant autorité.
Valider votre robot : Tester, Optimiser, Déboguer
Écrire le code n'est que la moitié de la bataille. Un trader professionnel ne lance jamais un robot sur un compte réel sans des tests rigoureux. Le Testeur de Stratégie intégré à MT5 est votre laboratoire pour cette phase critique.
Backtesting avec le Testeur de Stratégie
Le Testeur de Stratégie (Ctrl+R) vous permet d'exécuter votre EA sur des données de prix historiques pour voir comment il se serait comporté. Vous pouvez sélectionner le symbole, l'horizon de temps et la plage de dates pour votre test. Une fois terminé, vous obtiendrez un rapport détaillé avec des métriques clés :
- Profit Net Total : La rentabilité globale.
- Facteur de Profit : Profit brut divisé par perte brute. Tout ce qui est supérieur à 1,5 est généralement considéré comme bon.
- Drawdown Maximal : La plus grande baisse du capital du sommet au creux. C'est une mesure cruciale du risque.

- Nombre total de trades : Le nombre de trades effectués.
L'analyse de ces résultats vous aide à comprendre les forces et les faiblesses de votre stratégie. Une stratégie qui semble excellente sur le papier, comme une approche de trading de position à long terme, pourrait montrer un drawdown inattendu lors d'un backtest.
Optimisation de base des paramètres
Et si votre croisement de MM fonctionnait mieux avec des périodes de 12 et 45 au lieu de 10 et 50 ? Le mode 'Optimisation' du Testeur de Stratégie peut répondre à cette question. Il exécutera votre backtest des centaines ou des milliers de fois, en essayant différentes combinaisons de vos paramètres d'entrée (comme FastMAPeriod et SlowMAPeriod) pour trouver les réglages les plus robustes.
Avertissement : Faites attention à ne pas 'sur-optimiser'. Trouver les paramètres parfaits pour les données passées ne garantit pas le succès futur. Utilisez l'optimisation pour trouver des plages stables, pas un seul réglage 'saint graal'.
Dépannage de votre code MQL5
Les bugs font partie intégrante du développement. Voici comment les écraser :
- Erreurs de compilation : MetaEditor mettra en évidence les erreurs de syntaxe dans votre code avant même qu'il ne compile. L'onglet 'Erreurs' en bas vous indiquera le numéro de la ligne et la nature du problème.
- La fonction
Print(): Votre meilleure amie pour le débogage. Parsemez des instructionsPrint()dans votre code pour afficher les valeurs des variables, vérifier si une fonction est appelée ou confirmer que votre logique s'exécute correctement. La sortie apparaît dans l'onglet 'Experts' du terminal MT5. - L'onglet Journal : MT5 enregistre toutes les opérations de trading et les erreurs dans l'onglet 'Journal'. Si votre
OrderSend()échoue, c'est le premier endroit où chercher la raison.
En combinant le backtesting, l'optimisation et un débogage minutieux, vous pouvez renforcer votre confiance en votre EA avant de risquer un seul dollar.
Conclusion : Votre voyage dans l'automatisation commence
Vous venez de faire un grand pas en avant, passant d'une stratégie de trading manuelle à un Expert Advisor MQL5 tangible et automatisé. Ce parcours, de la compréhension de l'environnement MQL5 à la mise en œuvre d'une gestion des risques robuste et au débogage, vous dote des compétences fondamentales pour donner vie à vos idées de trading. Le pouvoir de l'automatisation ne réside pas seulement dans son efficacité, mais aussi dans sa capacité à éliminer l'émotion de vos décisions de trading, en exécutant votre stratégie avec une discipline inébranlable. N'oubliez pas que la construction d'un robot de trading est un processus itératif d'apprentissage, de test et d'amélioration. Les principes que vous avez appris ici ne sont qu'un début. Pour approfondir votre compréhension et explorer des concepts MQL5 plus avancés, FXNX offre une multitude de ressources, des tutoriels avancés aux forums communautaires où vous pouvez partager des idées et obtenir du soutien. Quel aspect de votre stratégie de trading êtes-vous le plus impatient d'automatiser ensuite ?
Prêt à commencer ? Téléchargez MetaTrader 5, ouvrez MetaEditor et commencez à coder votre premier Expert Advisor MQL5 dès aujourd'hui en utilisant les principes appris dans ce guide !
Foire aux questions
Quelle est la principale différence entre MQL4 et MQL5 ?
MQL5 est un langage de programmation orienté objet plus avancé, conçu pour MetaTrader 5, offrant de meilleures performances et une plus grande flexibilité. Les principales différences incluent la manière dont les ordres sont gérés (MQL5 utilise un système basé sur les positions, tandis que MQL4 est basé sur les tickets) et un accès plus facile à des fonctionnalités avancées comme un calendrier économique intégré et une profondeur de marché plus importante.
Puis-je exécuter plus d'un Expert Advisor sur mon compte MT5 ?
Oui, vous pouvez exécuter plusieurs EAs simultanément. Vous pouvez attacher différents EAs à différents graphiques, ou même plusieurs EAs au même graphique. Il est crucial de s'assurer que chaque EA utilise un 'Numéro Magique' unique dans son code pour éviter qu'ils n'interfèrent avec les trades les uns des autres.
De combien d'expérience en codage ai-je besoin pour construire un robot forex MQL5 ?
Bien qu'une expérience préalable en codage soit utile, elle n'est pas strictement nécessaire. MQL5 a une syntaxe de type C++ qui peut être apprise avec de la persévérance. Ce guide fournit les bases, et avec la grande quantité de ressources en ligne et le soutien de la communauté, un trader déterminé peut apprendre à coder un EA de base et fonctionnel.
Vaut-il mieux construire mon propre robot forex ou en acheter un ?
Construire votre propre robot vous donne un contrôle total et une compréhension complète de la stratégie, ce qui est un avantage significatif. Acheter un robot pré-fabriqué peut être une boîte noire avec des risques cachés. Pour les traders sérieux au sujet de l'automatisation, apprendre à construire son propre EA est une compétence précieuse qui permet une personnalisation et une adaptation sans fin aux conditions changeantes du marché.
Prêt à trader ?
Rejoignez des milliers de traders sur NX One. Spreads 0.0, 500+ instruments.
À propos de l'auteur

Kenji Watanabe
Responsable Analyse TechniqueKenji Watanabe is the Technical Analysis Lead at FXNX and a former researcher at the Bank of Japan. With a Master's degree in Economics from the University of Tokyo, Kenji brings 9 years of deep expertise in Japanese candlestick patterns, yen crosses, and Asian trading session dynamics. His meticulous approach to charting and pattern recognition has earned him a loyal readership among technical traders worldwide. Kenji writes with precision and clarity, turning centuries-old Japanese trading techniques into modern actionable strategies.
Traduit par
Yannick Mbeki est Traducteur Junior en Finance chez FXNX. Originaire de Douala au Cameroun, Yannick poursuit actuellement ses études en Finance à l'Université Paris-Dauphine. En tant que stagiaire chez FXNX, il apporte une perspective franco-africaine à la traduction de contenus financiers, veillant à ce que l'éducation forex atteigne les audiences francophones en Europe et en Afrique avec un langage financier précis et culturellement adapté.