Bonjour,
Sujet qui m'intéresse, je me permets de partager mon parcours et quelques ressources — j'ai appris le MQL5 sans venir du développement, donc l'angle est peut-être utile à d'autres autodidactes.
Ce qui aide à démarrer
Le MQL5 ressemble beaucoup au C++ dans sa syntaxe, mais on n'a pas besoin d'apprendre le C++ pour s'en sortir. En pratique, 90 % d'un Expert Advisor tient dans quelques concepts : variables, conditions, boucles, fonctions, et la structure événementielle propre à MetaTrader.
Cette structure, c'est le premier vrai obstacle. Il faut comprendre que le code ne s'exécute pas de haut en bas une fois, mais par
événements :
- OnInit() : au chargement, une seule fois. Initialisation des handles d'indicateurs, vérification des paramètres.
- OnTick() : à chaque nouveau tick. C'est le cœur du programme, et la source de la plupart des erreurs de débutant — beaucoup de logiques ne doivent s'exécuter qu'à l'ouverture d'une nouvelle bougie, pas à chaque tick.
- OnDeinit() : au retrait du graphique. Nettoyage des objets.
- OnTimer(), OnTrade(), OnChartEvent() : pour des besoins plus spécifiques.
Les différences avec MQL4 qui piègent
Si tu as déjà touché au MQL4, plusieurs choses ont changé en profondeur et recopier de vieux exemples mène droit dans le mur :
- La gestion des ordres : plus de OrderSend() à l'ancienne. On passe par les structures MqlTradeRequest / MqlTradeResult, ou bien par la classe CTrade de la bibliothèque standard — nettement plus simple pour commencer.
- Le modèle position/ordre : MT5 distingue positions et ordres en attente, avec un système de netting ou de hedging selon le compte. C'est une source de confusion majeure quand on vient de MT4.
- Les indicateurs : on ne lit plus directement une valeur avec iMA(...). Il faut créer un handle dans OnInit(), puis copier les valeurs avec CopyBuffer(). Plus verbeux, mais plus performant.
Ressources
- La documentation officielle MQL5 : dense mais complète, avec un exemple de code pour presque chaque fonction. C'est la référence à garder ouverte en permanence.
- Les articles de la communauté MQL5 : plusieurs centaines, de qualité inégale mais certains excellents, notamment sur la gestion du risque et l'architecture de code.
- La bibliothèque standard (Trade\Trade.mqh, Trade\PositionInfo.mqh, Trade\SymbolInfo.mqh) : à utiliser dès le départ plutôt que de réécrire soi-même la couche d'exécution.
- MetaEditor lui-même : le débogueur intégré, avec points d'arrêt et exécution pas à pas sur données historiques, est très sous-utilisé. Il fait gagner un temps considérable par rapport aux Print() semés partout.
Conseils de méthode
Ce que j'aurais aimé qu'on me dise plus tôt :
- Commencer par un EA volontairement bête : croisement de deux moyennes mobiles, un seul ordre à la fois, stop et target fixes. L'objectif n'est pas la rentabilité, c'est de faire fonctionner tout le circuit de bout en bout.
- Coder le stop-loss avant la logique d'entrée. Un EA sans stop géré au niveau du serveur est une bombe à retardement : coupure de connexion, plateforme fermée, VPS qui redémarre, et la position reste ouverte sans protection.
- Tester la gestion des erreurs de trade : requote, prix invalide, marge insuffisante, marché fermé. Un EA qui ne vérifie pas le code retour de ses ordres finira par ouvrir des positions fantômes ou en doubler.
- Se méfier du testeur de stratégie : le mode "prix d'ouverture uniquement" donne des résultats très optimistes. Il faut passer en tick réel et vérifier la qualité de modélisation, surtout pour du scalping où le spread représente une part énorme de l'edge théorique.
Une remarque pour finir : la partie difficile n'est pas le langage. Écrire du MQL5 correct s'apprend en quelques semaines. Trouver une logique qui garde un avantage hors de la période d'optimisation, c'est autre chose — et c'est là que se passe l'essentiel du travail.
Quel est ton point de départ exactement : jamais programmé du tout, ou tu viens d'un autre langage ? Les ressources à conseiller ne sont pas les mêmes.