L'idée de cet Expert Advisor est de moi, et le code a été rédigé par Sergey Diubakin.
Cette version de l'Expert Advisor a été utilisée pour le trading sur un compte PAMM. En raison du facteur humain (oui, c'est moi), le profit net a atteint 20%. Le maximum de profit réalisable était de 84% du dépôt initial.
Période de trading réel : du 23.02.2015 au 23.07.2015.
D'après mes observations, le trading avec cet Expert Advisor nécessite un dépôt conséquent (entre 15 000 et 20 000 € au minimum).
Les valeurs de l'indicateur de la Moyenne Mobiles sont utilisées pour les opérations. Si la ligne de la moyenne mobile rapide est au-dessus de la ligne de la moyenne mobile lente, et que la distance entre ces deux lignes est supérieure à un seuil spécifié, un ordre d'achat est ouvert.
Pour ouvrir un ordre de vente, les valeurs opposées des indicateurs sont utilisées. La fermeture des ordres se fait selon les valeurs de l'indicateur de moyenne mobile.
Cet EA dispose également de modules supplémentaires : la distance entre les moyennes mobiles rapide et lente, Take Profit, Stop Loss, Trailing Stop, ainsi que la distance entre les ordres (vers le haut et vers le bas), méthode d'averaging de Take Profit, temps de trade, Turn, et l'augmentation du premier lot principal en cas de perte.
L'algorithme de l'EA :
- L'EA vérifie s'il y a des ordres qu'il a précédemment ouverts.
- S'il n'y a pas d'ordres ouverts, l'EA analyse le graphique. Si toutes les conditions spécifiées dans les paramètres sont remplies, il ouvre le premier ordre principal.
- Après l'ouverture du premier ordre principal, l'EA fixe les niveaux de Take Profit et Stop Loss (si ces modules sont activés).
- Si le premier ordre principal se clôture avec une perte, le prochain ordre peut être ouvert avec une taille augmentée.
- Si le premier ordre principal est ouvert et que les modules Step Up et Step Down sont activés, et que le prix atteint les valeurs spécifiées, alors des ordres supplémentaires pour ces modules peuvent être placés. Des ordres supplémentaires pour les modules Step Up et Step Down ne peuvent être placés que si l'EA constate qu'il a précédemment ouvert le premier ordre principal ou qu'il y a des ordres supplémentaires non clôturés.
- Ce Expert Advisor a 2 modes de fonctionnement :
- a) En mode 1, si la MA rapide est au-dessus de la MA lente, l'EA place des ordres d'achat. Lorsque la tendance s'inverse (la MA rapide est en dessous de la MA lente), tous les ordres ouverts sont fermés et des ordres de vente sont placés.
- b) En mode 2, si l'EA a ouvert des ordres d'achat et que la tendance change, les ordres restent ouverts. L'EA peut seulement placer des ordres de vente lorsque la MA rapide devient inférieure à la MA lente et que tous les ordres de l'EA sont fermés (Take Profit, Stop Loss atteints, ou fermés "manuellement").
- Cet Expert Advisor comprend un module de temps de trading qui, s'il est activé, permet à l'EA de placer le premier ordre principal uniquement à la période spécifiée dans ce module. Ce module ne s'applique pas aux ordres supplémentaires pour les modules Step Up, Step Down et Turn. C'est-à-dire que si des ordres ont été précédemment ouverts par l'EA, et qu'un de ces modules est activé, alors des ordres supplémentaires pour ces modules seront placés indépendamment du temps.
Paramètres de l'Expert Advisor :
Mode de fonctionnement :
- 1 — si la tendance change, tous les ordres ouverts sont fermés et les ordres opposés sont ouverts;
- 2 — si la tendance change, les ordres ouverts ne sont pas fermés (l'EA attend que le Take Profit, le Stop Loss soient atteints, ou que l'ordre soit fermé "manuellement").
MA rapide — paramètres pour l'indicateur de la moyenne mobile : période, décalage, méthode MA. La moyenne mobile incluse dans le terminal MetaTrader 4 est utilisée.
MA lente — paramètres pour l'indicateur de la moyenne mobile : période, décalage, méthode MA. La moyenne mobile incluse dans le terminal MetaTrader 4 est utilisée.
Lot initial
4.1. Lot initial
- LotConst_or_not — permet à l'utilisateur de choisir s'il souhaite commencer à trader avec le même lot ou recalculer le lot initial en fonction du changement de dépôt :
true — le premier lot sera constant et égal à la valeur des Lots spécifiée ci-dessous;
false — le premier lot changera dynamiquement selon le changement de dépôt et dépendra du paramètre RiskPercent et de la taille du dépôt. Lots = AccountBalance() * (RiskPercent / 100.0) / 10000.0 - Lots — définit le lot initial pour le trading;
RiskPercent — définit le lot initial en fonction du dépôt.
4.2. Augmentation du lot
- FirstLotMultiplicator — paramètre responsable du ratio d'augmentation de chaque ordre principal suivant en cas de perte du précédent premier ordre principal ;
- First_LotSize — si le premier ordre principal atteint une valeur spécifiée dans cette ligne, alors l'EA place Take Profit au niveau défini dans la ligne suivante (First_LotSize_TakeProfit), mais pas dans le point 5 des paramètres de l'EA ;
- First_LotSize_TakeProfit — un niveau de Take Profit "nouveau" pour le premier ordre principal, au cas où il atteint la taille définie dans la ligne First_LotSize ;
- First_MaxLotSize — la valeur maximale à laquelle l'EA augmentera le premier ordre principal. Si la taille du premier ordre principal à placer est supérieure à la valeur spécifiée dans cette ligne, alors l'EA placera le premier ordre principal selon le point 3.1. des paramètres de l'EA.
- LotConst_or_not — permet à l'utilisateur de choisir s'il souhaite commencer à trader avec le même lot ou recalculer le lot initial en fonction du changement de dépôt :
Paramètres de distance entre la MA rapide et la MA lente
- Distance — la distance requise entre la MA rapide et la MA lente pour ouvrir un ordre, mesurée en points du graphique sur lequel l'EA est attaché.
true — le module Distance est activé (on),
false — le module Distance est désactivé (off).
- Distance — la distance requise entre la MA rapide et la MA lente pour ouvrir un ordre, mesurée en points du graphique sur lequel l'EA est attaché.
Profit en points — TP
- TakeProfit — la valeur de profit souhaitée en points lors de la fermeture d'un ordre ou d'un groupe d'ordres.
true — le module TakeProfit est activé (on),
false — le module TakeProfit est désactivé (off).
- TakeProfit — la valeur de profit souhaitée en points lors de la fermeture d'un ordre ou d'un groupe d'ordres.
Méthode d'averaging — Variante — variante de la méthode d'averaging du niveau TakeProfit (sélectionnable entre 1 ou 2).
- Variante 1. L'averaging du niveau se fait selon cette formule : (prix d'ouverture 1 + prix d'ouverture 2 + prix d'ouverture 3 + prix d'ouverture N) / N + niveau de Take Profit, spécifié dans les paramètres de l'EA.
- Variante 2. L'averaging du niveau se fait comme suit : l'EA détermine le "niveau sans perte" de chaque position (en tenant compte de chaque swap et des commissions sur les ordres ouverts par l'EA au moment de l'averaging du niveau de Take Profit) et ajoute le niveau de Take Profit spécifié dans les paramètres de l'EA à ce prix.
Stop en points — SL
- StopLoss — valeur de la perte en points, qui peut être encaissée si le prix évolue dans la direction opposée (vers l'ordre ouvert).
true — le module StopLoss est activé (on),
false — le module StopLoss est désactivé (off).
- StopLoss — valeur de la perte en points, qui peut être encaissée si le prix évolue dans la direction opposée (vers l'ordre ouvert).
Distance entre les ordres (Step Up) — la distance (intervalle) entre les ordres ouverts dans la grille d'ordres, définie le long de la "tendance".
true — le module Step Up est activé (on),
false — le module Step Up est désactivé (off).9.1. Trailing stop — niveau Stop Loss mobile.
true — le module Trailing stop est activé (on),
false — le module Trailing stop est désactivé (off).Distance entre les ordres (Step Down) — la distance (intervalle) entre les ordres ouverts dans la grille d'ordres, définie contre la "tendance".
true — le module Step Down est activé (on),
false — le module Step Down est désactivé (off).L'identifiant des ordres de l'EA — Magic (Magic Number) — ce paramètre aide les EAs à reconnaître leurs ordres lorsqu'ils tradent dans un terminal.
Logo et sortie des données — ShowTableOnTesting — ce paramètre permet d'activer ou de désactiver le tableau (gains aujourd'hui, hier, etc.) : true - activé, false - désactivé.
Time frame — code du programme qui détermine quel timeframe de graphique sera utilisé par l'EA pour trader.
- Actuel — le timeframe du graphique, spécifié dans le terminal.
- M1, M5, M15, M30, H1, H4, D1, W1, MN1 — timeframes fixes.
Temps de trading — module pour ouvrir le premier ordre principal à un moment spécifique.
true — le module Temps de trading est activé (on),
false — le module Temps de trading est désactivé (off).Turn — place des ordres limites selon le niveau de Stop Loss du premier ordre principal dans la direction opposée.
true — le module Turn est activé (on),
false — le module Turn est désactivé (off).- Turn — la distance à laquelle l'ordre d'attente opposé est placé.
- LotMultiplicator — le paramètre responsable du ratio d'augmentation des ordres placés par le module Turn, si le précédent ordre s'est clôturé avec une perte (fermé par Stop Loss, "manuellement" ou simplement avec une perte);
- Turn_TakeProfit — le niveau de Take Profit pour les ordres placés par le module Turn;
- Turn_LotSize — si l'ordre à placer par le module Turn dépasse la valeur définie dans cette ligne, alors un nouveau niveau de Take Profit est utilisé pour cet ordre, spécifié par le module Turn dans la ligne suivante, mais pas dans la ligne Turn_TakeProfit;
- Turn_LotSize_TakeProfit — un nouveau niveau de Take Profit pour les ordres du module Turn, au cas où les ordres à placer dépassent la taille spécifiée dans la ligne Turn_LotSize;
- Turn_MaxLotSize — la taille maximale d'un ordre à placer par le module Turn. Si l'ordre à placer dépasse la taille spécifiée, alors l'EA ne le place pas.
Résultats du trading :

Cette version de l'Expert Advisor a été utilisée pour trader sur un compte PAMM. Période de trading réel : du 23.02.2015 au 23.07.2015.
Le maximum de profit réalisable était de 84% du dépôt initial. Cependant, à cause de mes interventions, le profit net n'a été que de 20%. La raison principale était que j'ai interféré avec le trading de l'EA.
Les tests de l'EA que j'ai réalisés ont montré des rendements nets de 5%, 10%, 15% par mois avec un drawdown ne dépassant pas 20% du dépôt.
P.S. Les ensembles joints ont fonctionné uniquement sur le compte que j'ai utilisé. Des paramètres custom pour l'EA sont nécessaires pour chaque courtier et compte (démo ou réel).
Ne vous laissez pas emporter par l'optimisation, car cela n'aide pas toujours et peut négliger la rapidité de placement des ordres lors de mouvements très rapides.
Articles connexes
- Générer des Signaux de Trading avec MQL5 Wizard : Étoiles du Matin/du Soir et RSI
- Utiliser MQL5 Wizard pour Créer un Expert Advisor Basé sur les Modèles de Chandeliers Englobants et MFI
- Développez un Expert Advisor avec MQL5 : Signaux de Trading 3 Corbeaux Noirs / 3 Soldats Blancs + RSI
- Générez des Signaux de Trading avec MQL5 Wizard : Dark Cloud Cover et Piercing Line
- AOCCI : Un Expert pour MetaTrader 5