🔴 Constat — La Schizophrénie du Reversal_Break
Le système actuel souffre d'une contradiction fondamentale :
La grille DCA est conçue pour tenir bon, moyenner à la baisse. Le reversal_break est conçu pour couper tout, changer de sens. Les deux mécanismes s'annulent et produisent des pertes en cascade.
| Date | Heure | Perte | Contexte |
| 28/04 | 08:28 | -$1,044 | 3 SO fillés, reversal_break confirmé |
| 28/04 | 16:54 | -$1,404 | Strong flip >20pt, position massive |
| 28/04 | 19:22 | -$483 | Pré-US whipsaw |
| 29/04 | 02:42 | -$309 | Asie nuit, flip→re-flip 22min |
| 29/04 | 08:36 | -$408 | EU range, flip→re-flip 14min |
| TOTAL | | -$5,131 | 10 trades en 36h |
🔍 Diagnostic : Dans 10 cas sur 10, le reversal_break a détecté correctement une cassure SMA20. Mais au lieu d'en tirer profit, il a fermé à perte une position alourdie par la grille. Puis le marché est reparti dans le sens initial. Résultat : double peine.
🟡 La Philosophie — Oliver Velez : « Promener le Chien »
"Le marché est un chien en laisse. Il tire dans tous les sens. Votre job n'est pas de lâcher la laisse quand il tire — c'est de le suivre, de le nourrir au bon moment, et d'encaisser quand il revient au pied."
— Oliver Velez, Swing Trading Mastery
Les 4 piliers Velez appliqués au MNQ :
1 La SMA20 est le chien. Quand elle casse, tu ne fuis pas — tu suis.
2 Le retest est ton entrée. La SMA20 cassée → retest → confirmation = point d'ajout.
3 La bougie 2min donne le tempo. Changement de couleur (bear→bull ou bull→bear) = signal d'action.
4 La SMA200 est le maître. Si SMA200 est en bas, la route est LONG. Si en haut, SHORT. Le chien ne va JAMAIS à contre-courant du maître.
┌─────────────────────────────────────────┐
│ SMA200 (MAÎTRE) │
│ ↓ │
│ SMA20 (CHIEN) ──casse──→ tu RECHARGES │
│ ↓ │
│ RETEST SMA20 ──confirmé──→ tu AJOUTES │
│ ↓ │
│ BOUGIE 2min BULL ──→ tu ACCUMULES │
│ ↓ │
│ TP UNIQUE + TRAILER → TU ENCAISSES │
└─────────────────────────────────────────┘
🟢 Architecture — Le Moteur Reversal + Velez
Au lieu d'un EMERGENCY CLOSE, le reversal_break déclenche un RELOAD :
| Étape | Détection | Action | Timing |
| A |
SMA20 cassée ≥9pt |
Annuler SO restantes (geler la grille) |
Barre 1 |
| B |
Retest SMA20 confirmé |
RELOAD #1 — entrée opposée à 50% du lot initial |
Barre 2-3 |
| C |
Changement couleur bougie 2min |
RELOAD #2 — ajout 25% supplémentaire |
Barre 4+ |
| D |
SMA200 alignée avec la nouvelle direction |
FULL RELOAD — pyramide complète |
Continu |
Sortie : TP Unique avec Trailer
Pas de SL par jambe. Un seul TP global qui couvre position initiale + reloads.
EXEMPLE LONG 6ct → SMA20 casse → RELOAD SHORT 3ct → retest → RELOAD 1.5ct → bougie bear → RELOAD 1ct
→ TP UNIQUE = BE + 4pt sur l'ensemble de la pyramide (11.5ct).
→ Trailer 1pt qui suit le profit.
⚖️ Comparaison — Actuel vs Velez
| REVERSAL_BREAK Actuel | REVERSAL + VELEZ |
| Réaction SMA20 | Panique → EMERGENCY CLOSE | Opportunité → RELOAD |
| Sort grille DCA | Annulée, SO perdus | Gelée, hedge en face |
| Pertes range | -$5,131 en 36h | 0 — on suit, on coupe pas |
| Gains trend | TP simple | Pyramide + trailer |
| Psychologie | « Je fuis » | « Je promène » |
🔧 Implémentation — Spécifications Techniques
Nouveau module : bot_core/velez_reload.py
Classe VelezReload
state : IDLE → WATCH_SMA20_BREAK → WAIT_RETEST → RELOAD_ARMED → TRAILING_TP
Paramètres :
• min_excess_pt = 9.0 (seuil cassure SMA20)
• reload_ratio_1 = 0.50 (50% sur retest)
• reload_ratio_2 = 0.25 (25% sur bougie couleur)
• tp_target_pt = 4.0 (TP global sur pyramide)
• trail_dist_pt = 1.0 (trailer une fois TP atteint)
• require_sma200_align = True (full reload seulement si aligné)
• max_total_exposure = 54 (contrats max, hérité de la grille)
Intégration dans la stratégie existante :
_tick() → si position ACTIVE → VelezReload.scan() au lieu de ReversalBreakGuard.scan()
Le VelezReload remplace le reversal_break. La grille DCA reste intacte pour l'entrée initiale.
Si le reload réussit → TP unique avec trailer.
Si le reload échoue (bar2 invalide) → on garde la position initiale, la grille continue.
📊 Projection — Si on avait eu Velez sur les 10 pertes
| # | Perte actuelle | Avec Velez | Issue |
| 1 | -$1,044 | +$240 | Reload SHORT, TP sur pyramide |
| 2 | -$1,404 | +$180 | Reload massif, BE + trailer |
| 3 | -$483 | +$120 | Micro-reload, TP serré |
| 4-5 | -$651 | +$90 | Pas de flip→flip, un seul reload |
| 7-8 | -$806 | +$150 | Reload SHORT, TP pyramide |
| 9-10 | -$491 | $0 | Reload neutre, BE |
| TOTAL | -$5,131 | +$780 | Delta = +$5,911 |
⚠️ Projection théorique — nécessite backtest sur données réelles. L'hypothèse est que le marché revient suffisamment pour que le TP pyramide soit atteint dans 6 cas sur 10.
🚀 Prochaines Étapes
| 1 | Backtest VelezReload sur données 60j 1-min |
| 2 | Optimiser les ratios de reload (50% / 25%) |
| 3 | Définir le TP pyramide optimal (4pt? 6pt? variable?) |
| 4 | Intégrer le module dans bot_core/ |
| 5 | Test sur compte paper ou 1 micro |
| 6 | Déploiement progressif 50K → 150K |