FOREX SIGNAL ↗ Ouvrir l'app

MACD Zone Cross H1 — candidate production

Variante candidate du MACD cross classique (cf. macd-cross.md) appliquée à EUR/USD H1 avec un filtre de zone d'extension : un cross MACD/signal n'est valide que si le MACD est déjà du bon côté de zéro. SL/TP ATR-based pour adapter à la volatilité.

🛑🛑 STATUT au 2026-05-12 : REJETÉ OOS — pas d'EA livré. Backtest 6 ans 4 mois Dukascopy : 923 trades, expectancy IS +0.005 R et OOS +0.011 R (dans le bruit, ≈ random walk), max DD OOS −27.4 R (au-delà du gate < 20 R). 2/4 gates échouent. Verdict détaillé : mt5/AUDIT_2026-05-12_macd_zone_cross.md.

Différence avec les 3 rejets précédents (BCMR, RSI Learn, Alligator Learn) : l'expectancy OOS n'est pas franchement négative mais dans le bruit. Asymétrie LONG/SHORT révélée : LONG OOS +0.042 R (hit 33.8%), SHORT OOS −0.018 R. Pas d'edge exploitable cependant.

Aucun EA MQL5 livré. La fiche reste comme référence méthodologique + point de départ pour d'éventuelles variantes v2 (multi-TF, magnitude filter, LONG only, trailing stop). Chaque variante = nouveau cycle complet.

🛑 STATUT ORIGINEL : CANDIDATE — backtest gate à passer avant tout EA. Cette fiche décrit une stratégie candidate au registry Hermes V2+ (hors scope V1.5 strict qui fixe 4 stratégies actives). Aucune ligne d'EA MQL5 ne sera écrite avant que le backtest Dukascopy 2020-2026 passe les 4 gates OOS : expectancy ≥ +0.20 R, max DD < 20 R, n ≥ 30 trades, ratio OOS/IS ≥ 0.6. Si rejet → archivage comme BCMR (script de backtest conservé, EA non livré).

Méthodologie stricte (cf. KANBAN root, anti-patterns) : pas de tuning post-hoc. Les paramètres ci-dessous sont fixés AVANT le backtest selon les standards documentés (MACD 12/26/9 = Gerald Appel 1979). Toute variation nécessite une justification ex-ante et un commit sous nouveau nom (v2).

Pourquoi H1 et pas M15

Les 3 stratégies M15 testées en mai 2026 (BCMR, RSI Learn, Alligator Learn) ont toutes échoué OOS sur Dukascopy 6 ans. Diagnostic commun :

H1 mitige ces 3 points :

Mécanique

Indicateur unique : MACD(12, 26, 9) sur close H1

   macd_line  = EMA(12, close) - EMA(26, close)
   signal_line = EMA(9, macd_line)
   histogram   = macd_line - signal_line   [informatif, non utilisé]

Notation : tout évalué au close du bar i=1 (dernier bar H1 fermé).

1. Détection du cross (entre i=2 et i=1) :
   - LONG cross  : macd(i=2) ≤ signal(i=2) AND macd(i=1) > signal(i=1)
   - SHORT cross : macd(i=2) ≥ signal(i=2) AND macd(i=1) < signal(i=1)

2. Filtre zone d'extension (cœur de la variante) :
   - LONG  valide ssi macd(i=1) > 0
   - SHORT valide ssi macd(i=1) < 0
   Le cross en zone neutre (proche de zéro) est rejeté — typiquement piège
   de range où MACD oscille des deux côtés sans direction installée.

3. Filtre coût :
   - Skip si spread courant > MaxSpreadPoints (30 = 3 pips sur 5-digit)

4. Stop / Take Profit ATR-based :
   - Calcul ATR(14) H1 au bar i=1
   - SL = entry ± SLATRMult × ATR (1.5 × ATR par défaut)
   - TP = entry ± TPATRMult × ATR (3.0 × ATR par défaut)
   - RR théorique fixe = TPATRMult / SLATRMult = 2.0

5. Entry = close du bar i=1 (au moment où le cross est confirmé)

6. Cooldown 4 heures (= 4 bars H1) post-signal, toutes directions
   confondues. Évite l'overshoot après un cross qui retournerait.

7. Pas de filtre session ni news en v1 — si l'edge est conditionnel, on
   le verra dans la décomposition par heure UTC du backtest.

Pourquoi le filtre MACD vs 0

Le cross MACD/signal seul est le défaut classique : très fréquent (~10-20/jour H1), majorité de faux signaux dans les phases de consolidation. Le filtre zone d'extension réduit drastiquement la fréquence en ne gardant que les crosses dans le sens du momentum installé :

C'est l'équivalent moderne du "trade with the trend" appliqué à MACD.

Pourquoi SL/TP ATR-based

Leçon Alligator Learn 2026-05-12 : RR=2.0 avec SL=15 pips fixe sur M15 EUR/USD = 27.9% hit rate OOS (sous break-even 33.3%). Causes :

ATR adapte mécaniquement :

Le RR théorique reste 2.0 partout, c'est la distance absolue qui varie avec le contexte de marché.

Paramètres baseline

Paramètre Valeur Justification
MACDFast 12 Gerald Appel 1979, standard universel
MACDSlow 26 Idem
MACDSignal 9 Idem
ATRPeriod 14 Wilder standard
SLATRMult 1.5 ~1 ATR au-dessus du noise typique H1
TPATRMult 3.0 RR théorique 2.0
MaxSpreadPoints 30 3 pips 5-digit (aligné LonBO)
CooldownHours 4 4 bars H1 entre signaux
MagicNumber 70707070 Identifiant EA (TBD si livraison)

Aucune optimisation post-backtest. Si l'edge n'apparaît pas avec ces paramètres standards, le marché ne récompense pas MACD cross zone-filtered sur EUR/USD H1 — pas qu'il faut "ajuster".

Fréquence attendue

Sur 6 ans 4 mois (2020-01 → 2026-05) ≈ 1600 jours ouvrés, on attend ~1500-2500 signaux pré-cooldown. Largement au-dessus du gate n ≥ 30 trades OOS.

Gates OOS (méthodologie BCMR, non négociables)

# Gate Cible Action si raté
1 OOS expectancy ≥ +0.20 R / trade edge réel après random walk + frais rejet définitif
2 OOS max DD < 20 R gestion risque acceptable rejet (~10% capital à 0.5%/trade)
3 OOS n ≥ 30 trades significativité statistique rejet (sample trop petit)
4 Ratio OOS/IS expectancy ≥ 0.6 robustesse / pas d'effondrement OOS rejet (sur-fit IS)

Découpage IS/OOS : 2020-01-01 → 2023-12-31 = IS (4 ans), 2024-01-01 → 2026-05-11 = OOS (~2.4 ans), soit ~70/30.

Performance attendue (à confirmer)

Métrique Cible Acceptable Rejet
Hit rate à RR=2.0 ≥ 38% ≥ 33.3% (BE) < 30%
Expectancy R ≥ +0.30 ≥ +0.20 < +0.10
Profit factor ≥ 1.4 ≥ 1.2 < 1.0
Max DD OOS < 12 R < 20 R ≥ 25 R

Pièges connus

1. Cross au sortir d'une consolidation (faux breakout MACD)

Quand le marché consolide longtemps, MACD oscille autour de zéro. Un cross avec MACD juste légèrement positif (genre +0.00001) déclenche un LONG juste avant un retournement. Le filtre MACD > 0 est strict mais la magnitude n'est pas pondérée — cross "frais" reste vulnérable.

Mitigation possible v2 : exiger |MACD| > k × ATR pour confirmer la zone d'extension. Pas en v1 pour éviter le tuning.

2. News rouge dans 30-60 min

Aucun filtre news. SL ATR-based atténue (45 pips au lieu de 15 fixe) mais ne résout pas. Si MACD passe le gate, l'EA déployé bénéficiera du filtre news_blackout standard d'Hermes (cf. KANBAN root Phase H1).

3. Régime change (cf. Alligator finding 2026-05-12)

Le backtest 2020-2026 couvre plusieurs régimes (COVID, inflation, hausse de taux, normalisation). Si l'expectancy s'effondre OOS versus IS, même symptôme que Alligator. La méthodologie ne récompense pas une stratégie qui ne survit pas à un régime change → rejet.

4. Bias direction (long vs short)

MACD cross long peut différer fortement de cross short selon le contexte EUR/USD (tendance baissière ou haussière dominante). Décompo par direction obligatoire dans le backtest.

Variantes envisagées (non implémentées en v1)

Variante Modification Rationale
Magnitude filter ` MACD
Histogram acceleration Cross + histogram qui s'écarte Confirme momentum
Multi-TF H1 cross + H4 MACD>0 (LONG) Cross-TF confirmation
Filtre session London 07-16 UTC Volatilité EUR/USD max
Trailing stop TP devient trailing après +1×ATR Capture trends longs
Filtre news rouge ±60 min Skip si news majeure Évite spread spike

Toutes attendent que la baseline passe le gate avant d'être considérées.

Couplage piliers A↔B↔C (CLAUDE.md root)

Pilier Fichier
A (docs) docs/strategies/momentum/macd-zone-cross.md (cette fiche)
C (spec) mt5/tests/test_macd_zone_cross_spec.py
B (R&D) hermes/scripts/backtest_macd_zone_cross.py
C (EA) mt5/MACD_Zone_Cross_v1.mq5 + includes — uniquement si gates OOS verts

Pas d'EA tant que le backtest n'a pas validé l'edge.

Liens