TopStep 50K Trading Combine · MNQ · Config V8 "zero-SL" · 2026-04-19
| Nom | 50KTC-V2-46786-56936760 |
| ID | 21857049 |
| Balance | $50,000 fresh |
| Mode | TRADING_COMBINE (LIVE) |
| User API | goldy1971 (clé dédiée, séparée 150K/Bot S) |
| Credentials | config/secrets.env (chmod 600) |
| Symbol | MNQ (Micro E-mini Nasdaq 100) |
| Contract ID | CON.F.US.MNQ.M26 |
| Tick size / value | 0.25 pt · $0.50 |
| Point value | $2.00 / micro |
| Direction | LONG uniquement |
Grille winner grid-search (8 sizes × 6 offsets × 3 DW modes = 144 configs). Offsets élargis + SO1 renforcé (2 ct) = moyenne lissée plus bas, marge SL post-SO3 à 88.9 pts sous avg entry. Backtest 18j (2026-03-24 → 04-17) : 0 SL, 18/18 Daily TP, total $27,818 (avg $1,545/j).
Choix validé François 2026-04-19 après grid-search. Backtest 18j démontre 0 SL avec DANGER_WINDOWS actives (la fenêtre EU_LUNCH 12:00-13:00 neutralise le dump isolé du 2026-04-06). Le SL $1,600 est donc filet de sécurité rarement touché, pas un scénario attendu. Marge théorique : 88.9 pts sous avg post-SO3. Si SL + slippage 20 pts déclenché : perte $1,960 → max DD à $40 près. Un seul SL consommerait quasi tout le buffer.
V8 combine sessions US + 10 DANGER_WINDOWS bloquant les nouvelles entrées (positions en cours continuent). Start effectif à 09:00 Paris (ASIA_SESSION_START_CONTROL), cluster EU 12:00-13:00 bloqué (ajouté V8), 7 fenêtres US data-driven.
Les DANGER_WINDOWS bloquent les nouvelles entrées par horaire Paris (DST-safe, zoneinfo). Les SESSIONS UTC conservées comme filet de trailing stop 3 pts hors fenêtre : exit_on_positive=True, sortie au premier recul si déjà en profit. Position en cours n'est jamais coupée par une DW : seule l'ouverture de nouveau cycle est bloquée.
⚠️ Heures Paris CEST (été). En CET (hiver), les 10 DW restent correctes (gérées en Paris-time via datetime.now(ZoneInfo("Europe/Paris"))).
| Paramètre | 150K combine | 50K combine | Ratio |
|---|---|---|---|
| account_size | $150,000 | $50,000 | ×1/3 |
| max_drawdown (trailing) | $4,500 | $2,000 | ×0.44 (contrainte propfirm 50K) |
| SL hard cap (max_loss_usd) | $3,000 | $1,600 | V8 : marge 88 pt vs 75 pt |
| Daily TP kill-switch | $4,525 | $1,520 | ×1/3 |
| Daily Loss Limit | $3,000 | $1,200 | ×0.4 |
| Base order contracts | 2 | 1 | ×0.5 |
| SO sizes | [2, 6, 18] | [2, 2, 4] | V8 winner grid-search |
| SO offsets (pts) | [−7, −14, −28] | [−10, −20, −40] | V8 : offsets élargis, 0 SL |
| Max contracts | 27 | 9 | ×1/3 |
| $/pt max | $54 | $18 | ×1/3 |
| TP fixe | 7 pts | 7 pts | inchangé |
| Max consecutive losses | 3 | 2 | plus serré |
| Pause après loss (s) | 300 | 600 | ×2 (plus prudent) |
Grid-search 144 configs (8 sizes × 6 offsets × 3 DW modes) sur 18j. V7 baseline : 9 SL / 17 Daily TP days, $27,106. V8 winner : 0 SL / 18 Daily TP days, $27,818. Les offsets élargis (SO3 à −40 vs −28) + SO1 renforcé à 2 ct lissent la moyenne plus bas (avg post-SO3 = entry −22.2 pt) ce qui étend la marge SL à 88.9 pt sous avg. DANGER_WINDOWS EU_LUNCH 12:00-13:00 (ajouté V8) neutralise le dump isolé 2026-04-06 à 12:40 Paris (−80 pt / 5 min).
| Critère | NQ Looper 50K (ici) | Practice 150K V7 |
|---|---|---|
| Type compte | Trading Combine LIVE | Practice (pas de DLL) |
| Stratégie | V8 zero-SL | V7 tight martingale |
| Offsets SO | [−10, −20, −40] (large) | [−5, −12, −25] (serré) |
| SO sizes | [2, 2, 4] | [10, 12, 24] |
| Filtre horaire | DANGER_WINDOWS 10 fenêtres | DANGER_WINDOWS 9 fenêtres |
| Heures tradables/jour | ~9h45 (hors DW) | 10h55 (hors DW) |
| Trailing hors fenêtre | Oui (3 pts) | Non (24/7 bypass) |
| SL hard cap | $1,600 | $4,500 |
| Daily TP | $1,520 | $4,535 |
| Backtest 18j : SL | 0 SL | 0 SL |
| Backtest 18j : Daily TP days | 18/18 | 18/18 |
Un SL $1,600 + slippage +20 pts × 9 ct × $2 = $1,960 de drawdown réel, soit 98 % du buffer max DD $2,000.
Un seul SL touché consommerait quasi l'intégralité du buffer DD. Deux SL consécutifs → max_consecutive_losses=2 déclenche pause 600 s et buffer ≤ 0.
Le backtest 18j montre 0 SL grâce aux DW actives : le SL $1,600 reste filet de sécurité rarement touché, pas un scénario attendu. Si 1 SL arrive en réel : arrêter le bot manuellement, réévaluer la grille ou passer à SL $1,200.
| Code path | bot_DCA/loop2/propfirm/topstep_combine50k/ |
| Service systemd | nq-looper-50k-api |
| Port interne | 127.0.0.1:8892 |
| Log API | /var/log/nq-looper-50k-api.log |
| Dashboard | nq-looper-50k.html |
| Health | GET /api/nq-looper-50k/health |
| Status | GET /api/nq-looper-50k/status |
| Settings | GET /api/nq-looper-50k/settings |
| Start | POST /api/nq-looper-50k/start |
| Stop | POST /api/nq-looper-50k/stop |
| Kill | POST /api/nq-looper-50k/kill |
config/settings.py)