SomaOil
- Experts
-
Andrii Soma
If you bought my EA, contact me to join the Telegram group.
Also, there is a group on this website if you don't have Telegram: - Version: 1.0
- Activations: 10
SomaOil est un Expert Advisor multi-stratégies de breakout pour MetaTrader 5, conçu exclusivement pour le pétrole brut WTI (XTIUSD). Un graphique, un EA, 20 stratégies indépendantes qui tournent ensemble comme un portefeuille diversifié unique.
Pour le rendre accessible au lancement, j'utilise un modèle de prix progressif transparent :
- Prix de lancement : 100 USD (48 heures)
- À partir du lundi, le prix augmente de 100 USD pour chaque tranche de 10 copies vendues
- Les hausses de prix ont lieu au plus une fois par jour, même si plus de 10 copies sont vendues le même jour
Les acheteurs précoces verrouillent le prix le plus bas pour toute la durée de vie du produit.
Concept
Au lieu d'exécuter une seule configuration sujette au surapprentissage d'un régime de marché étroit, SomaOil embarque un ensemble sélectionné de 20 stratégies pré-réglées qui tournent en parallèle sous un seul EA sur un seul graphique WTI.
Chaque stratégie a son propre numéro magique, commentaire, timeframe, paramètres de détection de swing, sorties, distances d'actualités et pas de lot. Elles partagent le même moteur d'exécution mais tradent indépendamment, ce qui assure une diversification réelle sur les timeframes et la largeur de breakout sans gérer des dizaines de graphiques.
Création du portefeuille
J'ai lancé des optimisations sur deux plages in-sample complémentaires, chacune avec la même grille de paramètres :
- 5 groupes de timeframes : D1, H12, H8, H4, H1
- Trois variantes de largeur de breakout :
- V1 Broad : swings plus larges, moins de configurations mais plus fortes ;
- V2 Medium : fréquence de configurations équilibrée ;
- V3 Narrow : swings plus serrés, configurations plus fréquentes.
- Toutes ont été optimisées selon return / drawdown :
- D'abord par Return / Balance DD
- Puis par Return / Equity DD
Les deux plages d'optimisation et leurs fenêtres hors échantillon étaient :
- Res1 — In Sample : 2018.10.10–2024.10.10 | OOS : 2024.10.10–2026.06.26
- Res2 — In Sample : 2020.06.26–2026.06.26 | OOS : 2018.10.10–2020.06.26
Res1 et Res2 sont des moitiés complémentaires de la même histoire, donc chaque plage valide l'autre hors échantillon. W2 OOS (2018–2020) se situe dans W1 IS, et W1 OOS (2024–2026) se situe dans W2 IS — le même schéma Res1/Res2 croisé-validé que pour SomaBTC, ancré à l'historique XTIUSD disponible depuis le 2018.10.10.
Cette combinaison timeframe × largeur × plage d'optimisation produit la diversification. Des stratégies différentes se déclenchent dans des régimes de volatilité différents, donc la courbe d'equity ne dépend pas d'un seul comportement de marché.
Chaque stratégie candidate a ensuite été filtrée :
- Si des stratégies étaient trop corrélées avec une autre stratégie restante, elles ont été retirées.
- Si une stratégie ne correspondait pas aux ticks réels ou échouait sa fenêtre hors échantillon, elle a été retirée.
- Toutes les optimisations ont été faites avec la clôture du trading le vendredi activée, ce qui a éliminé l'optimisation basée sur les gaps de week-end risqués.
Ainsi, seules 20 stratégies ont survécu — 7 de Res1 et 13 de Res2.
Portefeuille final par plage d'optimisation et timeframe de swing :
- Res1 (7) : 1 D1, 1 H12, 2 H4, 3 H1
- Res2 (13) : 2 D1, 4 H12, 2 H8, 4 H4, 1 H1
- Total (20) : 3 D1, 5 H12, 2 H8, 6 H4, 4 H1
En dernière étape, la taille de lot de chaque stratégie a été fixée par un script Python propriétaire qui a trouvé la meilleure combinaison return / balance DD. Les stratégies plus corrélées en DD reçoivent des allocations plus petites, et les stratégies qui apportent plus de valeur reçoivent une allocation de lot plus grande.
Numéros magiques
Chaque stratégie utilise un numéro magique unique à 8 chiffres pour que MetaTrader puisse distinguer ses trades des autres EAs ou ordres manuels. Vous verrez le numéro magique sur chaque ordre et position, et dans le commentaire de stratégie (par exemple SomaOil #1 81241201).
Les chiffres ne sont pas aléatoires — ils encodent ce qu'est la stratégie :
- 1er chiffre — famille EA (8 = SomaOil)
- 2e chiffre — plage d'optimisation (1 = Res1, 2 = Res2)
- 3e–4e chiffres — timeframe de swing en heures (01 H1, 04 H4, 08 H8, 12 H12, 24 D1)
- 5e chiffre — largeur de breakout (1 Broad, 2 Medium, 3 Narrow)
- 6e chiffre — cible d'optimisation (1 Balance DD, 2 Equity DD)
- 7e–8e chiffres — ID du fichier set d'origine du lot de recherche
Exemple : le magic 81241201 se lit SomaOil · Res1 · D1 · Broad · Equity DD · set #01.
Cela permet d'identifier facilement quelle stratégie a ouvert un trade dans le terminal ou dans l'historique du compte, sans ouvrir les paramètres de l'EA.
Risque et taille de lot
Deux modes de dimensionnement sont disponibles :
- Lot manuel — lots fixes par trade
- Lot per balance step — dimensionnement automatique selon le capital du compte, mis à l'échelle par stratégie
Des contrôles supplémentaires affinent le profil de risque :
- Multiplicateur de risque global sur le lot calculé
- Plafond EA optionnel via MaxLots ( 0 par défaut = pas de limite EA; spécification courtier uniquement); > 0 = maximum strict
- Choisir le solde ou l'equity comme base de dimensionnement
- Mode OnlyUp — les lots montent avec le pic de capital mais ne descendent jamais pendant les drawdowns de trading ; les retraits réduisent le pic de sizing et les dépôts l'augmentent (les deux déclenchent une synchronisation immédiate du pic et un rééquilibrage des lots en attente). Au démarrage, l'EA amorce le pic historique depuis l'historique récent des trades fermés (lookback configurable), pour une base OnlyUp pertinente dès le premier tick au lieu d'être réinitialisée à chaque redémarrage
- Sélecteur de devise de base (USD, EUR, GBP, HKD, SGD ou une paire personnalisée) pour un dimensionnement correct sur les comptes non-USD
- Protection contre le margin call (activée par défaut) : avant d'envoyer des ordres, l'EA traite les stops/limites en attente du même sens comme si la marge d'ordre au marché était déjà requise, afin de ne pas sur-allouer la marge libre lorsque le courtier réserve peu sur les pendings ; il peut aussi réduire le lot calculé pour que, dans le pire cas, les ordres simultanés du même sens restent dans un budget de marge lié à votre base de dimensionnement. Désactivez uniquement si vous maîtrisez totalement effet de levier et marge disponible.
Filtre d'actualités
SomaOil inclut un calendrier d'actualités US intégré couvrant trois types d'événements à fort impact :
- NFP — Non-Farm Payrolls
- CPI — Consumer Price Index
- IR / FOMC — décisions de taux des banques centrales
Autour de chaque événement, l'EA peut indépendamment bloquer les nouvelles entrées, annuler les ordres en attente existants et fermer les positions ouvertes. Chaque stratégie a ses propres fenêtres en minutes avant et après, donc la protection actualités est réglée par stratégie plutôt qu'en global.
Le GMT du courtier peut être défini manuellement ou détecté automatiquement, pour que les fenêtres d'actualités s'alignent toujours sur l'heure du courtier, y compris lors des changements d'heure d'été. Le classifieur est resserré pour exclure les faux positifs courants comme l'ADP Nonfarm Employment et les discours/procès-verbaux FOMC.
Fenêtre de trading
Une fenêtre optionnelle ouverture lundi / clôture vendredi permet d'éviter les gaps de week-end. Vous choisissez si vous souhaitez aussi fermer les ordres en attente ou les positions ouvertes hors de la fenêtre de trading.
Plusieurs stratégies utilisent aussi une fenêtre de session quotidienne intégrée (heures de début/fin par stratégie) pour éviter les périodes de faible liquidité. Celles-ci font partie du preset du portefeuille et ne sont pas des entrées utilisateur séparées.
L'optimisation a été effectuée avec la clôture du vendredi activée, ce qui est le réglage par défaut, donc pas de sur-optimisation sur les conditions de gap de week-end risquées.
Filtre de spread
SomaOil peut éviter de placer des ordres en attente de breakout lorsque le spread du courtier est trop large — important sur le pétrole brut (rollover, news, faible liquidité).
Le filtre ne concerne que les ordres en attente. Les positions ouvertes et leurs sorties (SL, TP, trailing, break-even) restent inchangées.
- MaxSpreadPips (défaut 80) — spread max. en points MT5 sur cotation WTI 3 décimales. 0 = désactivé.
- RemovePendingSpreadSeconds (défaut 60) — supprime les pendings de la stratégie si le spread reste au-dessus de la limite sans interruption pendant ces secondes. 0 = blocage des nouvelles entrées seulement.
Normalisation 2/3 décimales ; limite effective mise à l'échelle par DefaultValue de chaque stratégie et prix de référence du pétrole.
Conformité Prop Firm
Un offset aléatoire optionnel en pips par trade peut être appliqué aux entrées et sorties via MaxRandomizationPips. Votre compte obtient ainsi des niveaux légèrement différents des autres traders utilisant le même EA — utile sur les comptes prop firm et financés où des schémas de copy-trading identiques peuvent être signalés. Zéro pour désactiver.
SomaOil inclut aussi une couche de conformité optionnelle (désactivée par défaut) : verrouillage DD journalier max., règle no-hedge et plafond d'ordres pending. Voir EnablePropFirmCompliance et inputs associés ci-dessous.
Tableau de bord sur graphique
SomaOil affiche un tableau de bord en direct sur le graphique :
- Portefeuille actif
- Base de dimensionnement des lots et capital effectif
- Ordres en attente et positions ouvertes ventilés achat/vente
- P/L flottant et P/L clôturé du jour
- Drawdown solde et equity, absolu et pourcentage
- Statistiques de slippage : tout le temps, 7 jours, 24 heures
- Spread actuel et nombre de stratégies actives
- Prochains et derniers événements NFP, CPI et IR/FOMC
Le tableau de bord peut être désactivé dans le Strategy Tester pour des backtests plus rapides.
Paramètres
Overrides
- EnableMagicOverride -> si activé, les numéros d'ID de trade sont assignés comme OverrideMagicBase + index de stratégie ; si désactivé (défaut) chaque stratégie utilise son ID intégré
- OverrideMagicBase -> numéro d'ID de trade de départ quand l'override magic est activé
- EnableCommentOverride -> si activé, tous les trades partagent un commentaire ; si désactivé (défaut) chaque stratégie garde le sien
- OverrideComment -> texte de commentaire quand l'override de commentaire est activé
Direction
- AllowBuyTrades -> autoriser les trades long et pendings buy
- AllowSellTrades -> autoriser les trades short et pendings sell
Taille de lot
- LotsAdjustMinChangePercent -> changement min. % avant mise à jour du lot actif
- Risk -> ManualLotSize (StartLots fixe) ou LotSizeStep (auto selon capital)
- AdjustLotsizeToVariableValues -> recalculer les lots si balance ou equity change
- StartLots -> lot fixe en manuel ou plancher en step
- MaxLots -> plafond EA optionnel; 0 = spécification courtier uniquement
- UseEquity -> dimensionner sur l'equity plutôt que la balance
- OnlyUp -> les lots montent avec le pic de capital et ne descendent jamais pendant les drawdowns de trading ; retraits réduisent le pic, dépôts l'augmentent
- RestorePeakFromHistory -> initialiser le pic OnlyUp depuis l'historique récent des trades fermés au démarrage
- RestorePeakLookbackDays -> jours de lookback pour la restauration du pic (0 = tout l'historique)
- ManualBalanceForLotSizing -> capital fixe pour le sizing si > 0
- RiskMultiplier -> multiplicateur global sur le lot calculé
- MarginCallProtection -> réserver la marge pour pendings même sens et plafonner le lot au budget de marge
- BaseCurrency -> USD, EUR, GBP, HKD, SGD ou custom pour comptes non-USD
- CustomBaseCurrencyPair -> symbole courtier pour conversion quand BaseCurrency est custom
GMT
- Broker_GMT_OFFSET_Summer -> offset GMT manuel été (heures)
- Broker_GMT_OFFSET_Winter -> offset GMT manuel hiver (heures)
- AutoGMT -> détecter le GMT du courtier automatiquement (ignore les offsets manuels)
Filtres actualités
- EnableNFP_Filter -> activer la fenêtre de protection NFP
- NFP_CloseOpenTrades -> fermer les positions avant NFP
- NFP_ClosePendingOrders -> annuler les pendings avant NFP
- EnableIR_Filter -> activer la fenêtre IR / FOMC
- IR_CloseOpenTrades -> fermer les positions avant IR
- IR_ClosePendingOrders -> annuler les pendings avant IR
- EnableCPI_Filter -> activer la fenêtre CPI
- CPI_CloseOpenTrades -> fermer les positions avant CPI
- CPI_ClosePendingOrders -> annuler les pendings avant CPI
Les minutes avant/après par stratégie sont intégrées au portefeuille, pas des paramètres séparés.
Heures de trading
- UseTradingTimeZones -> appliquer la fenêtre hebdo lundi–vendredi
- KillPending -> annuler les pendings hors fenêtre
- KillOpen -> fermer les positions hors fenêtre
- MondayOpenHour / MondayOpenMinute -> la fenêtre s'ouvre le lundi à cette heure courtier
- FridayCloseHour / FridayCloseMinute -> la fenêtre se ferme le vendredi à cette heure courtier
Plusieurs stratégies utilisent aussi une fenêtre de session quotidienne intégrée (heures de début/fin par stratégie) dans le preset du portefeuille. Ce ne sont pas des entrées utilisateur séparées.
Tableau de bord
- DisableDashboardInTesting -> masquer le tableau de bord dans le Strategy Tester
- DashboardUpdateSeconds -> intervalle de rafraîchissement (sec)
Spread Filter
- MaxSpreadPips -> spread max. en points MT5 (convention 3 décimales) ; scalé par DefaultValue ; 0 = off
- RemovePendingSpreadSeconds -> supprimer pendings après spread élevé soutenu (sec.) ; 0 = jamais supprimer
Conformité Prop Firm
Tous les inputs par défaut off / zéro — impact nul sur les performances quand désactivés.
- MaxRandomizationPips -> offset prop firm entrées/sorties ; unique vs autres utilisateurs EA (0 = off)
- EnablePropFirmCompliance -> interrupteur maître ; doit être true pour que les règles ci-dessous s'appliquent
- PF_MaxDailyDrawdownPercent -> perte equity quotidienne max. en % de la base journalière (0 = off)
- PF_MaxDailyDrawdownMoney -> perte equity quotidienne max. en devise du compte (0 = off)
- PF_DailyResetHour -> heure broker/serveur (0–23) de reset de la fenêtre journalière
- PF_DailyLossBufferPercent -> marge de sécurité avant la limite dure (défaut 10%)
- PF_DisallowHedging -> bloque les entrées opposées ; supprime les pendings opposés
- PF_MaxTotalPendingOrders -> plafond total des ordres pending EA (0 = off)
Configuration recommandée
- Symbole : pétrole brut WTI — attachez l'EA au graphique US crude / WTI de votre courtier. Le même instrument est souvent listé sous différents tickers ; sur nos terminaux de test nous avons vu : XTIUSD, USOUSD, USOUSD.s, WTI, SpotCrude. SomaOil est conçu pour les symboles commençant par XTIUSD ; si votre courtier utilise un autre nom, ouvrez Market Watch et recherchez WTI, crude, oil ou USO pour trouver le graphique correspondant.
- Timeframe : n'importe lequel (l'EA lit ses propres timeframes en interne)
- Type de compte : compte ECN / RAW-spread recommandé pour des spreads serrés
- Solde minimum recommandé : 2000 USD pour le risque par défaut. La taille de lot calculée ne peut pas descendre sous 0,01 par trade ; les comptes en dessous ne peuvent pas réduire davantage le risque.
- VPS : recommandé pour une exécution 24/5 stable
- Ajoutez "https : // ea-license-server . somatrade . org" et "https : // www . worldtimeserver . com/" aux URL autorisées dans MT5 (Outils - Options - Conseillers experts)
Résumé
- 20 stratégies de breakout pré-réglées sur un seul graphique WTI (XTIUSD)
- Deux plages d'optimisation avec OOS croisé-validé, couvrant 2018–2026
- Timeframes : D1, H12, H8, H4 et H1
- Sorties en couches avec break-even et trailing stops
- Protection actualités US intégrée avec filtrage des faux positifs
- Filtre de spread optionnel pour pendings (MaxSpreadPips + suppression spread élevé soutenu)
- Randomisation optionnelle entrées/sorties pour unicité prop firm (MaxRandomizationPips)
- Mode conformité prop firm optionnel (DD journalier max., no-hedge, plafond pending) — off par défaut
- Tableau de bord live complet sur graphique
- Lancement à prix progressif transparent : 100 USD de départ, +100 USD par 10 copies, max. une fois par jour
