MultiStrat Engine EA
- Experts
- Julien Favre
- Version: 1.0
- Activations: 5
MultiStrat Engine EA repose sur une règle d'or fondamentale : chaque trade ouvert est un trade pleinement assumé. Sans Stop Loss, aucune perte n'est jamais cristallisée — les positions sont tenues jusqu'au retour à l'équilibre (Point Zéro).
Un EA conçu pour automatiser intégralement la gestion des positions sur tous types d'instruments financiers (Forex, actions, indices, matières premières). Il intègre une architecture modulaire exceptionnellement riche, combinant plus de 28 modes de trading distincts, une gestion dynamique des risques, un système de compensation des frais de broker, et un dashboard HTML interactif pour l'analyse comparative des backtests.
Architecture générale
L'EA repose sur une séparation claire entre le côté BUY et le côté SELL, chacun disposant de ses propres paramètres indépendants : mode de trailing, timeframe, taille de lot, take profit, stop loss, distances entre ordres, et comportement dynamique. Cette dualité permet de combiner des stratégies asymétriques ou parfaitement symétriques selon les besoins du trader.
Les 28+ modes de trading
Côté BUY :
- BUY_MODE_NONE — Placement d'un ordre BuyStop avec trailing simple et TP fixe individuel par position.
- BUY_MODE_NONE_CANDLE — Identique, mais fermeture globale déclenchée à la bougie si le profit net global est positif.
- BUY_CLOSE_CANDLE — Fermeture de toutes les positions BUY à chaque nouvelle bougie si le profit total est positif.
- BUY_CUMUL_SINGLE — Take Profit virtuel cumulatif : la somme pondérée des pips (net de frais) de toutes les positions BUY doit atteindre le TP configuré avant fermeture globale.
- BUY_CUMUL_MULTI — Variante CUMUL : le TP cible est multiplié par le ratio volume total / volume de base, récompensant l'accumulation de lots.
- BUY_CUMUL_POS — TP progressif par nombre de positions : chaque position supplémentaire réduit le TP unitaire selon un facteur configurable, avec un plancher minimum.
- BUY_HEDGE_CANDLE — Chaque entrée BUY génère automatiquement une position SELL hedge de taille proportionnelle ; fermeture à la bougie si profit global positif.
- BUY_HEDGE_SINGLE — Hedge automatique + TP cumulatif SINGLE.
- BUY_HEDGE_MULTI — Hedge automatique + TP cumulatif MULTI.
- BUY_HEDGE_SINGLE_ADD_SELL_TP — Hedge SINGLE avec compensation intégrée des pertes flottantes du SELL hedge dans le calcul du TP BUY.
- BUY_HEDGE_MULTI_ADD_SELL_TP — Hedge MULTI avec la même compensation.
- BUY_DIRECT_HEDGE — Hedge direct permanent : à chaque nouveau BUY exécuté, l'ancien SELL hedge est remplacé par un nouveau. Le SELL hedge est fermé automatiquement lors d'une clôture BUY gagnante.
- BUY_DIRECT_HEDGE_ADD_SELL_TP — DIRECT_HEDGE avec inclusion des pertes SELL dans le TP BUY.
- BUY_DIRECT_HEDGE_ADD_SELL_TP_AUTO_MAX — Identique avec calcul automatique du prix maximum d'achat via moyennes mobiles.
- BUY_PARTIAL_CLOSURE — Système de fermeture partielle sophistiqué : le lot principal est découpé en unités, des helpers sont placés progressivement selon le niveau de grille atteint, et les profits combinés helper + unité principale déclenchent un grignotage progressif du trade principal.
- BUY_LADDER_PROFIT — Fermeture individuelle de chaque position dès que ses pips nets atteignent le TP configuré (échelle de profits).
- BUY_WAVE_RIDING — Fermeture rapide dès 30% du TP atteint, puis réouverture immédiate pour "surfer" la vague suivante.
- BUY_VIX_REVERSION — Spécialisé VIX : fermeture si le VIX dépasse des seuils de retour à la moyenne.
- BUY_MOMENTUM_BURST — Fermeture ultra-rapide à 20% du TP, puis multiplication des entrées à volume réduit pour capitaliser sur les impulsions de momentum.
- BUY_SCALP_ACCUMULATOR — Scalp à 15% du TP par position, suivi d'une réouverture immédiate pour accumuler des gains micro-fractionnés.
- BUY_VIX_OSCILLATION_MASTER — Gestion avancée multi-zones du VIX avec des règles de fermeture dépendantes du prix d'entrée et du niveau courant du VIX.
- BUY_PROFIT_COMPOUNDING — Réinvestissement amplifié : selon le profit réalisé, le lot de réentrée est multiplié (jusqu'à x2).
- BUY_BREAKOUT_SURFER — Détection de momentum sur M1 : fermeture à 70% du TP, réentrée conditionnelle si breakout détecté.
- BUY_ADAPTIVE_PYRAMID — TP adaptatif calculé selon la volatilité (écart-type des prix d'ouverture) et le nombre de positions ouvertes.
- BUY_GRID_RECOVERY_SMART — Détection intelligente de récupération de grille : fermeture si profit positif et prix au-dessus de la médiane de la grille, puis réentrée à volume réduit.
- BUY_PATIENCE_ACCUMULATOR — TP décroissant avec le temps (−1% par heure), pour favoriser la patience et récompenser les trades maintenus longtemps.
- BUY_FIBONACCI_ZONES — Fermeture aux niveaux Fibonacci 50%, 61.8% ou 78.6% calculés depuis les prix d'ouverture des positions actives.
- BUY_VOLATILITY_RIDER — TP adaptatif basé sur l'ATR M1 : plus la volatilité est élevée, plus le TP est réduit pour sécuriser les gains rapidement.
- BUY_PROFIT_PYRAMID — Fermeture pyramidale individuelle à 60% du TP, avec réouverture d'une nouvelle couche si 2+ positions restent actives.
Les modes SELL sont parfaitement symétriques, avec leurs propres variantes SINGLE, MULTI, CANDLE, DIRECT_HEDGE, ADD_BUY_TP, etc.
Système de grille dynamique
L'EA supporte deux régimes de lot pour chaque côté :
- Mode FIXE : lot constant configurable par paramètre LotSizeBuy / LotSizeSell .
- Mode GRID : progression géométrique des lots selon BaseVolume × GridMultiplier^N , avec plafond MaxBaseVolume . Le multiplicateur peut être 1.0 (grille linéaire) ou supérieur (grille martingale).
La distance entre ordres ( DistanceOrderBuy/Sell ) et le seuil de réajustement ( TrailingDistanceOrderBuy/Sell ) contrôlent précisément le repositionnement des ordres en attente à chaque tick ou bougie.
Gestion des ordres
La fonction ManagePendingOrders repositionne automatiquement les BuyStop, BuyLimit, SellStop et SellLimit pour les maintenir à la bonne distance du prix courant. Elle intègre la logique NouveauxOrdresAPrixPlusAvantageux (dynamique) : en mode "uniquement bas" pour les BUY, seuls les ordres plus bas que le plus bas actif sont conservés ; les doublons trop proches sont supprimés. Une protection empêche la suppression du dernier ordre/position restant.
Compensation automatique des frais de broker
Le module EnableBrokerFeeCompensation calcule les commissions réelles payées par position (via l'historique des deals), les swaps accumulés, et estime la commission de sortie future. Ces frais sont convertis en pips via MoneyToPoints et ajoutés automatiquement au TP de chaque position ( AdjustTPWithRealFees ), garantissant que chaque clôture est réellement profitable net de frais. Un système de cache configurable ( CommissionCacheSeconds ) évite les recalculs trop fréquents.
Hedge automatique et gestion des jambes
Les modes HEDGE génèrent automatiquement une jambe opposée à chaque nouvelle entrée. En DIRECT_HEDGE, une seule jambe SELL est maintenue simultanément avec les BUY actifs, remplacée à chaque nouvel achat. La clôture d'un BUY gagnant (détectée via OnTradeTransaction et ProcessDealTicket ) déclenche automatiquement la fermeture des jambes SELL associées. Le ratio de lot du hedge est configurable via des presets (1:1, 1:2, 1:3, 1:4, 2:1, 3:1) ou une valeur personnalisée.
Signaux virtuels EDGE
Les modes HEDGE utilisent des signaux virtuels : au lieu de placer un ordre pending classique, l'EA maintient un signal interne ( g_buyEdgeVirtualSignalActive ) avec trailing dynamique. Le signal n'est converti en trade réel qu'au moment où le prix le traverse, minimisant les faux déclenchements et permettant un recalage automatique si la contrainte de distance change.
Prix maximum d'achat dynamique (MA)
Le paramètre PrixMaximumAchatSource permet de calculer automatiquement le prix plafond des achats à partir de deux moyennes mobiles configurables (période, méthode EMA/SMA/SMMA/LWMA, timeframe). La moyenne des deux MM est décalée d'un pourcentage paramétrable ( PrixMaximumAchatAutoDecalagePct ) pour créer une zone de sécurité dynamique. Une ligne orange sur le graphique indique le niveau courant.
Système de clôture partielle avancé (PARTIAL_CLOSURE)
Ce mode unique découpe automatiquement chaque lot principal en unités optimales (adaptées au SYMBOL_VOLUME_STEP ). Des trades "helper" sont placés au marché selon le niveau de grille atteint. Lorsque la combinaison profit_helper + profit_unitaire_principale atteint le TP cible, le helper est fermé et une unité du trade principal est grignotée ( PositionClosePartial ). Le cycle se répète jusqu'à épuisement complet du trade principal.
Gestion temporelle avancée
Chaque côté (BUY/SELL) dispose d'un timeframe indépendant avec heure et minute de départ configurables. Le calcul de validité ( IsValidTradingTime ) aligne les déclenchements sur des cycles précis depuis l'heure de départ, évitant les doublons intra-bougie. Après une clôture, une logique de "redémarrage rapide" autorise l'entrée dans la première moitié du cycle suivant sans attendre le prochain alignement complet. Un paramètre optionnel BlockTradingAroundSessionEdges bloque tout trading dans les 5 minutes encadrant l'ouverture ou la fermeture des sessions.
Contrôle budgétaire et protection du capital
La fonction CanAffordNextTrade simule le coût total (positions existantes + nouveau trade) si le prix revenait à zéro, et bloque toute nouvelle entrée si ce coût dépasse le capital alloué ( MaxAccountBalance en backtest, BackTestStopThreshold en live). Ce mécanisme de protection prévient les appels de marge involontaires quelle que soit la configuration de grille.
Exclusion de périodes (Ghost Periods)
Jusqu'à deux périodes calendaires peuvent être exclues du backtest. L'EA attend la fermeture naturelle de tous les trades ouverts avant de suspendre toute nouvelle activité pendant la période fantôme. Le nombre de jours exclus est déduit automatiquement du calcul des durées sans gains pour ne pas pénaliser les statistiques de performance.
Système de reporting mensuel et dashboard HTML
À la fin de chaque backtest, l'EA génère un fichier CSV cumlatif ( backtest_monthly_totals.csv ) enregistrant tous les runs avec : score OnTester, totaux mensuels, drawdown fond maximal, jours max sans gains, paramètres d'identification. Un dashboard HTML interactif ( backtest_monthly_totals.html ) est régénéré à chaque run, permettant de comparer visuellement tous les backtests via des camemberts mensuels, des tableaux de classement et deux scores : rendement pur (OnTester) et score équilibré (pénalisant l'irrégularité mensuelle via l'écart-type normalisé). Des filtres dynamiques (nombre affiché, pondération irrégularité, exclusion des mois négatifs) sont directement accessibles dans le navigateur sans rechargement.
Critères d'arrêt automatique du backtest
Plusieurs mécanismes d'arrêt précoce protègent l'optimisation :
- Drawdown fond : arrêt si balance − equity ≥ BackTestStopThreshold .
- Mois calendaire non positif : option StopSiMoisClosNonPositif pour stopper dès qu'un mois complet clôture à ≤ 0€.
- Filtre fenêtre mensuelle glissante : arrêt si le profit sur les N derniers mois clôturés est inférieur au seuil MonthlyMinProfitThreshold .
- Jours sans gains : arrêt si aucun trade gagnant depuis X jours calendaires consécutifs (hors périodes fantômes).
Panel graphique en temps réel
Un panneau configurable (couleurs, tailles, positions) affiche en temps réel pour chaque actif/magic number surveillé : nombre de positions BUY/SELL ouvertes, heure broker, spread actuel, temps avant prochain ordre, niveaux de solde nul (break-even long et short) avec lignes horizontales sur le graphique, ainsi que les profits/pertes sur 7 périodes (flottant, jour, hier, 7j, 14j, mois courant, mois précédent) avec coloration verte/rouge dynamique. Le TP virtuel est tracé en ligne sur le graphique pour les modes cumulatifs.
Trailing Stop Loss
Un trailing stop classique est disponible sur chaque côté avec TrailingStartBuy/Sell (seuil d'activation en pips) et TrailingStopLossBuy/Sell (distance de maintien). En modes CUMUL et HEDGE, le trailing est calculé sur la somme pondérée des pips de toutes les positions actives, pas position par position.
Compatibilité et configuration
- Compatible tous instruments MT5 (Forex, CFD actions, indices, matières premières, VIX).
- Magic number configurable pour faire coexister plusieurs instances sur le même compte.
- Spread personnalisé en backtest pour simuler des conditions réalistes.
- Logs de débogage activables/désactivables pour ne pas impacter les performances d'optimisation.
- Vérification de cohérence des paramètres au démarrage avec blocage si configuration invalide.
Trailing SL actif uniquement sur les modes suivants
Côté BUY :
- BUY_MODE_NONE
- BUY_DIRECT_HEDGE
- BUY_DIRECT_HEDGE_ADD_SELL_TP (famille)
- BUY_CUMUL_SINGLE
- BUY_CUMUL_MULTI
- BUY_HEDGE_SINGLE
- BUY_HEDGE_MULTI
- BUY_HEDGE_SINGLE_ADD_SELL_TP
- BUY_HEDGE_MULTI_ADD_SELL_TP
- BUY_CUMUL_POS
Côté SELL :
- SELL_MODE_NONE
- SELL_DIRECT_HEDGE
- SELL_DIRECT_HEDGE_ADD_BUY_TP
- SELL_CUMUL_SINGLE
- SELL_CUMUL_MULTI
- SELL_HEDGE_SINGLE
- SELL_HEDGE_MULTI
- SELL_HEDGE_SINGLE_ADD_BUY_TP
- SELL_HEDGE_MULTI_ADD_BUY_TP
- SELL_CUMUL_POS
