FOREX SIGNAL ↗ Ouvrir l'app

RSI + Stochastique + Bollinger M5 — reversal sur extrêmes confluents

Stratégie de retour à la moyenne à triple confirmation. L'idée : quand trois indicateurs d'extrême concordent simultanément, la probabilité d'un retournement à court terme est statistiquement supérieure à chacun pris isolément.

Rejetée OOS — backtest 2026-06-14. Testée sur 14 ans de vraies données EUR/USD M5 Dukascopy (1 139 703 barres, 2012→2026, 5 377 trades), la stratégie perd de l'argent net de spread, en IS comme en OOS, chaque année sans exception :

Cohorte n avg/trade total hit Profit Factor
ALL 5 377 −0.67 pip −3 622 pips 17.3 % 0.71
Tradable (stop ≥ 3 pips) 1 113 −0.74 pip −824 pips 25.5 % 0.83
IS (2012→~2022) 3 373 −0.64 pip −2 148 pips 17.3 % 0.73
OOS (~2022→2026) 2 004 −0.74 pip −1 474 pips 17.4 % 0.68

Deux causes structurelles :

  1. Géométrie SL/TP non viable : SL = bande − 1×ATR, entry = close à un extrême → stop médian de 1.44 pip, et 79 % des signaux ont un stop sous le spread (non tradables). Le R par trade explose artificiellement (un trade à 8 148 R sur un stop sous-pip) — d'où la mesure en pips net de spread, seule unité honnête ici.
  2. Pas d'edge même sur le sous-ensemble tradable : PF 0.83 < 1, toutes années négatives, long et short perdants. La triple confluence ne sauve pas le timing.

Artefacts reproductibles : hermes/scripts/backtest_rsi_stoch_bb_m5.py, hermes/data/rsi_stoch_bb_m5_backtest.json, hermes/data/backtests/rsi_stoch_bb_m5_trades.csv.

Conséquence : ne pas trader. Conservée comme cas pédagogique (visualisable via l'overlay ▲▽ Stratégie MR du pilier A) et exemple d'une triple confluence qui semble solide mais ne survit pas au coût de transaction. Rejoint le registre des stratégies rejetées OOS du repo.

Mécanique

Indicateurs :
  BB(20, 2σ)  → upper, middle (SMA20), lower
  RSI(14)     → 0-100
  Stoch(14)   → 0-100 (%K)

Signal ACHAT — les 3 conditions doivent être vraies simultanément :
  low    ≤  BB.lower        (la mèche touche ou passe sous la bande basse)
  RSI    <  30              (momentum survendu)
  Stoch  <  20              (momentum survendu confirmation)

Signal VENTE — les 3 conditions doivent être vraies simultanément :
  high   ≥  BB.upper        (la mèche touche ou passe au-dessus de la bande haute)
  RSI    >  70              (momentum suracheté)
  Stoch  >  80              (momentum suracheté confirmation)

  ⚠️ La touche de bande est mesurée sur la MÈCHE (low/high), pas sur le close.
     Un close atteint très rarement sa propre bande à 2σ (le close est le prix
     central qui sert à calculer la bande) ; la mèche est l'usage standard pour
     "le prix touche la bande". Vérifié empiriquement : close-touch = 0 signal
     sur données simulées, mèche-touch = 0-3 signaux (triple confluence rare
     par conception).

Entrée  : close de la bougie qui remplit les 3 conditions
Stop    : au-delà de la bande d'1 ATR(14)
            LONG  → SL = BB.lower  − 1×ATR
            SHORT → SL = BB.upper  + 1×ATR
TP      : BB.middle (SMA20) — retour à la moyenne statistique
            → sortir 100% ou 50/50 : 50% à la moyenne, 50% à la bande opposée

Filtre régime obligatoire (voir Pièges) :
  ADX(14) < 25   OU   Choppiness > 55
  Sinon : signal ignoré même si les 3 conditions sont vraies

Logique de la triple confluence

Indicateur Ce qu'il mesure Pourquoi insuffisant seul
Bollinger Écart statistique au prix courant Walking the bands en trend fort
RSI Vitesse et magnitude du mouvement Peut rester < 30 pendant 20+ barres en chute libre
Stochastique Position relative dans le range N-périodes Même problème que RSI, légèrement plus réactif

La conjonction des trois réduit les faux signaux en tendance : quand le prix "walk the bands", RSI et Stoch tendent à rester en zone extrême mais ils divergent souvent de Bollinger (price structure ≠ momentum). La troisième condition filtre ~40% des faux positifs attendus sur BB seul.

Conditions favorables

Stop / Take Profit

Indicateurs utilisés

TF privilégiés

M5 est le TF cible de cette stratégie, mais c'est aussi le plus bruyant. Recommandation pratique : utiliser M15 comme filtre directionnel. Ne prendre que les setups M5 dans le sens du bias M15 (RSI M15 entre 40-60 = pas de trend clair = setup M5 valide).

Sur M1 : trop de bruit, spread trop coûteux. Sur M15 ou H1 : setup plus rare mais qualité supérieure.

Pièges

Backtest — statut et next step

Étape Statut
Spec stratégie ✅ Ce document
Implémentation visuelle pilier A ✅ Overlay ▲▽ Stratégie MR sur le chart (toggle OVERLAY) — forex-assistant.tsx::mrSignals
Backtest Python Dukascopy EUR/USD M5 ✅ 2026-06-14 — backtest_rsi_stoch_bb_m5.py, 14 ans, 5 377 trades
Validation IS/OOS (split 70/30) REJETÉE — PF 0.73 IS / 0.68 OOS, toutes années négatives
Intégration Hermes ⛔ Abandonnée — pas d'edge, conditionnel non rempli

Règle du repo respectée : les chiffres publiés ci-dessus proviennent du backtest Python avec artefacts complets (CSV trades + script reproductible + métriques JSON), sur données réelles Dukascopy. Voir docs/strategies/breakout/london-breakout.md pour une fiche post-backtest à edge (modeste mais positif).

Tentative de raffinement (2026-06-14) — aucun filtre ne sauve la strat

Question posée : peut-on exclure des trades sous certaines conditions pour retrouver un edge ? Analyse disciplinée (découverte sur IS, validation OOS, pour éviter le data-mining) + recoupement avec les autres backtests du repo.

1. Recoupement inter-stratégies (famille mean-reversion EUR/USD M5) — toute la famille counter-trend du repo est sans edge robuste :

Stratégie IS OOS Note
BCMR (BB+RSI+ADX, mêmes indicateurs, multi-TF) +0.30 R −0.167 R a paru bon IS, mort OOS — le parallèle cautionnaire
range_trading −0.02 R +0.06 R PF ~1.0, bruit
ny_reversal −0.02 R +0.05 R PF 0.99, rien
divergence_rsi −0.14 R −0.14 R mort partout (comme nous)

2. Aucune dimension d'exclusion stable (avg pnl_pips, négatif en IS et OOS) :

Conclusion : les trades perdants ne se regroupent sous aucune condition stable et économiquement sensée. Tout filtre construit ici fitterait du bruit.

3. Grille de sortie pré-enregistrée (stop / TP)sweep_rsi_stoch_bb_m5_exits.py. La géométrie de stop d'origine (bande − 1×ATR) est un vrai défaut (stops sous-pip), donc on teste des stops sains : 3 stops (bande−1ATR, ATR×1.5, ATR×2.5) × 4 TP (SMA20, bande opposée, RR1.5, RR2.5) = 12 combos, plancher 5 pips, tuning IS → verdict OOS sans retouche.

Les 12 combos sont négatifs en IS (meilleur : ATR×2.5 / RR2.5, avg −0.479 pip, PF 0.943). La config gagnante IS reste négative en OOS (avg −0.598 pip, PF 0.923). Aucune config n'atteint PF > 1 en IS. Une seule cellule montre un OOS marginalement positif (bande−1ATR / RR2.5 : +0.069 pip, PF 1.013) mais elle est négative en IS sur 251/105 trades — la retenir serait de l'overfitting (bruit sur petit échantillon ayant échoué l'IS).

Verdict final : même en réparant le défaut de stop, la stratégie n'a aucun edge. Rejet OOS définitif.

4. Test des hypothèses économiques a prioriconfirm_rsi_stoch_bb_m5_hypotheses.py. Deux hypothèses formulées avant de regarder les résultats, pour épuiser la dernière porte ouverte :

Conclusion la plus forte : le signal ne porte aucune information directionnelle (fade ET follow perdent), et sa prémisse (extrême 2σ dans un range calme) est auto-contradictoire. Il n'y a rien à exploiter, dans aucune direction, sous aucun régime. Dossier clos. Ne pas re-creuser sans une hypothèse d'une autre nature (autre paire, autre TF, autre source d'edge — pas un réglage de cette strat).

Liens