Vous construisez un Expert Advisor MACD dans MT5 sans coder en posant un nœud Start, deux blocs MACD — l’un qui lit la ligne principale, l’autre la ligne de signal —, une condition Cross entre les deux, et un bloc d’ordre. Le serveur génère et compile le MQL5, puis vous remet un vrai .ex5. Quinze minutes, aucune syntaxe.
Vient ensuite la partie qui décide si ce fichier vaut quelque chose. Cette recette possède un relevé mesuré, et son chiffre le plus flatteur est celui auquel vous devriez le moins vous fier.
Ce que vous allez construire
Un EA à position unique sur une paire, qui achète quand la ligne MACD passe au-dessus de sa ligne de signal et vend quand elle passe en dessous, avec un stop et un objectif fixes, compilé en un vrai .ex5. Huit blocs.
Deux blocs de ce total n’existent que pour une seule raison : le bloc indicateur MACD ne renvoie qu’une ligne à la fois.
Avant de commencer : ce que le MACD indique, et quelle ligne vous lisez
Il vous faut un compte gratuit avec une adresse e-mail vérifiée (concevoir est gratuit et ne demande aucune connexion ; compiler en .ex5 en demande une), une quinzaine de minutes, et un terminal MetaTrader 5.
Le MACD soustrait une moyenne mobile lente d’une moyenne rapide, puis lisse à nouveau cette différence. La ligne principale mesure donc de combien deux moyennes se sont écartées, et la ligne de signal est cette mesure lissée. Tout ce qu’une règle MACD peut dire est une affirmation sur la distance entre deux moyennes — ce qui en fait un outil de tendance déguisé en oscillateur, et il hérite du retard des deux moyennes qui l’ont construit.
Le bloc MACD du Builder expose ces réglages :
| Réglage du bloc | Défaut | Ce qu’il contrôle |
|---|---|---|
fast_ema | 12 | La moyenne la plus rapide. Plage 1–999 |
slow_ema | 26 | La plus lente. L’écart entre les deux est tout le signal |
signal_period | 9 | Le lissage appliqué à la différence avant que vous ne la compariez |
line | MODE_MAIN | Quelle ligne ce bloc produit — MODE_MAIN ou MODE_SIGNAL |
applied_price | PRICE_CLOSE | Quel prix alimente le calcul |
shift | 0 | 0 est la bougie en formation ; 1 la dernière clôturée |
timeframe | graphique courant | N’importe laquelle de M1 à MN1, lue indépendamment du graphique |
line est la ligne du tableau qui change la forme de votre flux. C’est un sélecteur à deux valeurs, donc un bloc vous donne une ligne. Un croisement de la ligne de signal demande par conséquent deux blocs MACD ; un croisement de la ligne zéro n’en demande qu’un, plus une comparaison à une constante.
Pas à pas : construire l’EA MACD dans le Builder
- Ouvrez l’EA Builder et chargez le modèle
macd_signaldepuis la galerie, ou partez d’une toile vierge pour le câbler vous-même. - Posez un nœud Start pris dans la palette Utility. Sans lui, la validation arrête la construction avec
EAB-E202. - Ajoutez un bloc MACD et laissez
linesurMODE_MAIN. Laissez 12/26/9 tel quel pour la première construction, afin que votre résultat reste comparable à la référence ci-dessous. - Ajoutez un second bloc MACD avec des périodes identiques et mettez
linesurMODE_SIGNAL. Même indicateur, mêmes réglages, sortie différente — c’est l’étape que les gens sautent, et la sauter est la raison pour laquelle leur flux compare une ligne à elle-même. - Reliez les deux à une condition Cross. Cross prend deux entrées et demande si l’une a croisé l’autre sur cette bougie ; son
cross_typevautcrossoveroucrossunder, donc le côté achat et le côté vente sont deux conditions distinctes, et non une seule inversée. - Reliez chaque condition à son propre bloc Open Buy / Open Sell. Relier un indicateur directement à un ordre est rejeté avec
EAB-E205— une valeur brute n’est pas une décision. - Fixez le risque dans l’onglet Settings. Les valeurs par défaut partagées sont un stop de 50 pips, un objectif de 100 pips et un lot fixe de
0.01; un flux sans stop valide déclenche un diagnostic préalableCRITICALavant de pouvoir construire. - Appuyez sur Measure et lisez le résultat face au seuil qu’imprime le panneau lui-même : facteur de profit d’au moins 1,2, au moins 60 trades, drawdown pas pire que 20 %.
- Appuyez sur Compile .ex5, déplacez le fichier dans
MQL5/Expertsvia Fichier > Ouvrir le dossier de données (File > Open Data Folder), actualisez le Navigateur, et testez-le dans le testeur de stratégies avant qu’il n’approche d’un compte.
- Nœud Start
- Bloc MACD, line = MODE_MAIN
- Bloc MACD, line = MODE_SIGNAL
- Cross — crossover pour l’achat, crossunder pour la vente
- Open Buy et Open Sell
- Stop loss et take profit
- Compiler en .ex5
Si vous voulez plutôt la version ligne zéro, supprimez le second bloc MACD et remplacez Cross par Compare, dont les opérateurs sont > < >= <= == != et dont l’offset vaut 0 par défaut. « MACD principal au-dessus de zéro » affirme que la moyenne rapide est au-dessus de la lente, tout simplement — un événement bien plus rare et bien plus tardif que le contact des deux lignes. La palette propose aussi OsMA, qui produit directement la différence principale-moins-signal sous forme d’une seule valeur : une règle d’histogramme demande donc un bloc au lieu de deux.
Entrée, sortie et paramètres du MACD
| Réglage | Valeur du modèle | Ce que le déplacer fait |
|---|---|---|
fast_ema | 12 | Plus bas réagit plus tôt et croise bien plus souvent ; le nombre de trades bouge avant le taux de réussite |
slow_ema | 26 | L’augmenter élargit l’écart que la ligne rapide doit parcourir, donc les signaux arrivent plus tard et plus rarement |
signal_period | 9 | Le lissage de la ligne de comparaison. Plus court signifie plus de croisements, dont la plupart sont du bruit |
line | MODE_MAIN | Ce n’est pas un bouton de réglage — il décide quelle règle vous avez construite |
shift | 0 | Mettez 1 pour ne décider que sur des bougies clôturées |
| Stop loss | 50 pips (défaut partagé) | La plage cherchée allait de 30 à 80 |
| Take profit | 100 pips (défaut partagé) | La plage cherchée allait de 60 à 250 |
Sur le retard, qui est la critique honnête que l’on peut faire à cet indicateur. Chaque valeur produite ici est la sortie de deux moyennes empilées sur une troisième. Un croisement est donc le compte rendu d’un mouvement déjà survenu — la seule question est de savoir avec quel retard. Raccourcir fast_ema achète de la précocité et la paie en faux croisements ; allonger slow_ema achète de la fiabilité et la paie en entrées qui arrivent après le mouvement. Le propre relevé du modèle indique où il a atterri : 698 trades en un an, le deuxième nombre le plus élevé des treize modèles de tendance et de momentum mesurés dans des conditions identiques. C’est une conception qui se déclenche sans arrêt, et se déclencher sans arrêt est exactement ce que coûte un retard court.
Ce que la recherche a touché et ce qu’elle n’a pas touché. La recherche de paramètres enregistrée n’a fait varier que le stop et l’objectif — SL30-80 × TP60-250, 12 combinaisons sur trois fenêtres en H1. Elle n’a jamais fait varier fast_ema, slow_ema ni signal_period. Rien sur cette page n’appuie donc l’idée que 12/26/9 soit juste, faux ou améliorable. Elle appuie une affirmation bien plus étroite et bien plus utile : aucune combinaison de stop et d’objectif n’a sauvé cette conception.
Backtester l’EA MACD
Voici le relevé mesuré par le Builder lui-même, et non une nouvelle passe ; chaque modèle de la comparaison partage l’unique bloc de conditions ci-dessous. Comment nous testons énonce la norme à laquelle ces relevés sont tenus.
Référence de macd_signal | Valeur |
|---|---|
| Facteur de profit | 0,93 |
| Trades | 698 |
| Drawdown maximal | -1,05 % |
| Net | -93,93 |
| Rang dans son voisinage par facteur de profit | 8e sur 13 |
| Rang dans son voisinage par nombre de trades | 2e sur 13 |
| Franchit le seuil de réussite du panneau Measure | non |
| Conditions du test | |
|---|---|
| Identifiant d’expérience | EXP-MACD-RECIPE-BASELINE-001 |
| Expérience parente | EXP-BUILDER-TEMPLATE-BASELINE-001 |
| Symbole / unité de temps | USDJPYm M5 |
| Période | 2025-06-01 – 2026-06-09 |
| Modèle | M1 OHLC (Model=1) |
| Dépôt | 10,000 |
| Environnement | Exness MT5 |
| Référence mesurée | 2026-06-18 |
| Dernière vérification | 2026-08-25 |
Le résultat de cette recherche mérite plus d’une ligne. Huit modèles de la galerie portent une recherche de paramètres enregistrée, et tous les huit ont fini sur no_robust_edge. Mais ils ont échoué de deux façons différentes, et la différence compte davantage que le verdict commun. Deux d’entre eux n’ont jamais produit le moindre réglage gagnant, même sur la période à laquelle la recherche a été calée. macd_signal est le seul à avoir produit un réglage qui a franchi 1,0 hors échantillon — 1,14 à 1,15 à l’objectif le plus large — avant d’obtenir 0,74 à 0,77 sur la fenêtre précédente. Le mot qu’emploie le manifeste lui-même est dépendant du régime.
Lisez ce que cela implique sur la façon de tester. Si vous aviez coupé vos données une seule fois, calé sur la première moitié et vérifié sur la seconde, ce modèle vous aurait remis un résultat réussi. La seule chose qui l’a démasqué a été de vérifier une troisième période que la recherche n’avait jamais vue. C’est l’argument en faveur de l’analyse walk-forward sur un cas concret, et il vaut plus que n’importe quel avertissement général sur le surapprentissage.
Où se situe le MACD parmi ses voisins, tous mesurés sous l’unique bloc de conditions ci-dessus :
| Modèle | Blocs | Facteur de profit | Drawdown | Trades |
|---|---|---|---|---|
ma_perfect_order_trend | 10 | 1,07 | -0,36 % | 305 |
mtf_osc_filter | 27 | 1,04 | -0,64 % | 187 |
consecutive_bars_momentum | 7 | 1,03 | -0,36 % | 377 |
ao_ama_trend | 14 | 0,97 | -0,95 % | 239 |
adx_trend | 12 | 0,96 | -0,76 % | 534 |
multi_tf_trend | 15 | 0,96 | -0,51 % | 247 |
ma_crossover | 9 | 0,95 | -0,84 % | 420 |
macd_signal | 8 | 0,93 | -1,05 % | 698 |
ma_slope_trend | 7 | 0,92 | -1,00 % | 478 |
mtf_adx_filter | 14 | 0,92 | -0,84 % | 343 |
elder_ray | 9 | 0,90 | -1,34 % | 529 |
pitch_trail_trend | 9 | 0,77 | -1,61 % | 467 |
dynamic_sl_trend | 9 | 0,68 | -1,62 % | 708 |
Coupez ces treize conceptions à leur propre nombre de trades médian, 420, et les deux moitiés se séparent nettement. Les six qui ont le moins tradé affichent en moyenne un facteur de profit de 1,00 sur 283 trades avec un drawdown de -0,61 %. Les six qui ont le plus tradé affichent 0,86 sur 569 trades avec -1,23 % — de moins bons résultats et deux fois la profondeur. Les trois conceptions au-dessus de 1,0 se trouvent toutes dans la moitié la plus calme. Le MACD est dans la plus active.
C’est la description de treize conceptions sous un seul protocole, pas une loi : la logique d’entrée, le nombre de nœuds et les sorties diffèrent aussi, donc la fréquence n’est pas établie comme la cause. Mais c’est le schéma que vous avez devant vous, et le modèle MACD livré est du mauvais côté.
Les erreurs courantes à éviter
Croire à une réussite hors échantillon. C’est l’erreur que ce modèle existe pour démontrer. Une seule période mise de côté est un échantillon unique, et une règle de momentum peut gagner un échantillon unique parce que le marché a été en tendance pendant celui-ci. Testez une troisième fenêtre que la recherche n’a jamais vue avant de croire un chiffre.
Comparer une ligne à elle-même. Si les deux blocs MACD restent sur MODE_MAIN, la condition Cross compare des valeurs identiques et ne se déclenche jamais — ou se déclenche sur un arrondi. Vérifiez le réglage line sur les deux blocs avant de vous demander pourquoi le nombre de trades est nul.
Lire un croisement comme une prédiction. Le MACD, ce sont deux moyennes d’une moyenne. Un croisement rapporte qu’un mouvement est déjà en cours depuis quelques bougies. Le choix de conception porte sur le retard que vous acceptez, pas sur le fait d’en accepter un ou non.
Ajuster le stop et l’objectif jusqu’à ce que la courbe de capital ait bonne mine. La recherche enregistrée l’a déjà fait systématiquement sur 12 combinaisons et trois fenêtres, et a rapporté no_robust_edge. Si votre ajustement manuel bat une recherche systématique, soupçonnez l’ajustement.
Empiler les filtres de momentum. La composition ci-dessus est la version mesurée de cet instinct : 3,76 fois le drawdown pour un facteur de profit légèrement pire.
Le faire tourner à côté d’un autre EA sans les séparer. Chaque EA sur un même compte a besoin de son propre magic number, faute de quoi les sorties de l’un ferment les positions de l’autre.
Prochaines étapes et variantes
Quand ne pas utiliser le MACD. Dans un marché en range, deux moyennes se croisent à répétition et chaque croisement est du bruit — et un réglage par défaut qui se déclenche vite est exactement ce qu’un range punit. Si vous ne savez pas énoncer une condition qui arrête la règle pendant les phases plates, soit vous en ajoutez une, soit vous utilisez une idée qui ne dépend pas de l’écartement des deux moyennes.
Les variantes qui méritent un essai, par ordre de preuve. Essayez d’abord la version ligne zéro : elle est plus simple d’un bloc et se déclenche bien moins souvent, et c’est dans la moitié la plus calme du voisinage que se situe chaque résultat au-dessus de 1,0. Essayez ensuite la même règle sur un timeframe supérieur à l’intérieur du bloc MACD, ce qui ralentit le signal sans toucher au graphique. Ne déplacez les périodes qu’après cela — et changez-en une à la fois.
Puis testez-le pour de bon. Le panneau Measure travaille à la bougie et de façon approximative ; c’est un filtre, pas un verdict. Comment faire un backtest sur MT5 déroule une vraie passe de bout en bout, y compris lequel des deux drawdowns du rapport croire. Comment créer un EA RSI est la recette sœur, avec le mode de défaillance inverse : sa recherche n’a jamais rien gagné, ce qui la rend plus facile à rejeter et moins instructive que celle-ci. Comment créer un EA MT5 sans coder couvre le vocabulaire de blocs plus large, et les guides de backtesting approfondissent l’étape de walk-forward que cette page défend.
Et pour calibrer ce à quoi ressemble un relevé documenté, chaque fiche des EA publiés porte sa liste complète de trades clôturés et son manifeste d’exécution. Comparez-en une au tableau ci-dessus avant de faire confiance à une stratégie quelle qu’elle soit, y compris celle que vous avez construite vous-même.