← Dashboard

Bot DCA Loop2 — Practice 150K

Stratégie V7 "tight martingale zero-SL" · TopStep MNQ · 2026-04-19

● PRÊT AU LANCEMENT V7 backtesté 18 jours 0 SL sur 18 jours Grid-search 1368 configs

Highlights backtest 18 jours (2026-03-24 → 04-17)

Total P&L 18j $87,164 +58 % balance initiale
Daily TP hit 18/18 100 % des jours
Stop-Loss déclenchés 0 zéro, jamais
Daily TP médian 10:40 heure Paris · 1h40 trading/j

Compte & instrument

Compte TopStep

NomPRAC-V2-46786-67028512
ID21857512
Balance$150,000
TypePractice (pas de DLL, juste Max DD $4500)
Username APIgoldy1971

Instrument MNQ

SymbolMNQ (Micro E-mini Nasdaq 100)
Contract IDCON.F.US.MNQ.M26
Tick size / value0.25 pt · $0.50
Point value$2.00 / micro
DirectionLONG uniquement

Grille DCA V7 "tight martingale zero-SL"

Offsets serrés sélectionnés parmi 1 368 configs testées. Logique : SO se déclenchent plus tôt → prix moyen remonte plus vite → TP atteint avant que le drawdown n'explose.

Niveau
Offset
Contracts
Cumul
$/pt
BASE
0 pt
6
6
$12
SO1
−5 pts
10
16
$32
SO2
−12 pts
12
28
$56
SO3
−25 pts
24
52
$104
MAX
−25 pts
52
52
$104/pt
Take-Profitavg +7 ptsfixe, recalculé après chaque fill SO
Stop-Loss hard cap$4,500= Max DD TopStep trailing
Daily TP kill-switch$4,535stop après cycle courant

DANGER_WINDOWS — timeline journée Paris

9 fenêtres bloquent les nouvelles entrées (position en cours continue). Data-driven sur l'analyse statistique des dumps 18 jours.

00:00 → 09:00 ASIA_SESSION_RESERVED_SHORT — session Asie/pré-EU bloquée (gardée pour futur bot SHORT) start-time control
09:00 → 14:25 EU MORNING — zone reine, 67 % des Daily TP atteints ici tradable
14:25 → 14:45 MACRO_US_RELEASE — CPI / NFP / PPI / ISM (08:30 ET) bloqué
14:45 → 15:20 Pre-NY_OPEN calme tradable
15:20 → 15:55 NY_OPEN — 09:30 ET, pire créneau (drops jusqu'à −184 pts/15min) bloqué
15:55 → 16:30 POST_OPEN_KICKBACK — rebond piège (étendu +15min vs V6, comble gap vers MID_MORNING) bloqué · DW_F
16:30 → 17:05 MID_MORNING_US — 10:30 ET vague dumps bloqué
17:05 → 18:55 US mid-session — souvent déjà stoppé (Daily TP atteint) tradable
18:55 → 19:35 PRE_POWER_HOUR — flash crash 13:00 ET (drops −81 pts) bloqué
19:35 → 19:55 Mini-fenêtre tradable
19:55 → 20:30 FOMC_OR_2PM_RELEASE — FOMC · 14:00 ET news bloqué
20:30 → 20:55 Mini-fenêtre FOMC→NY_CLOSE tradable
20:55 → 22:05 NY_CLOSE — volatilité settlement bloqué
22:05 → 22:55 Post-close tradable
22:55 → 23:59 CME_DAILY_BREAK — pause broker (marché effectivement fermé) marché fermé
⚡ Fix bug DST

Le start 09:00 Paris est géré via la DW Asie Paris-native, pas via un seuil UTC. Le code utilise datetime.now(ZoneInfo("Europe/Paris")) qui gère automatiquement la transition CEST ↔ CET. Gain : +$3,220 sur 18j en hiver vs l'ancienne logique UTC.

V6 vs V7 — pourquoi on change

Critère V6 (ancien) V7 (nouveau) Gain
Base contracts66=
SO sizes[12, 18, 24][10, 12, 24]plus léger
SO offsets (pts)[−7, −14, −28][−5, −12, −25]plus serrés
Max contracts6052−13 %
$/pt max$120$104−13 %
Total 18j$85,332$87,164+$1,832 (+2.15 %)
SL days / 181 (16/04)0−100 %
Pire drawdown non-SL−$4,314non mesuré (jamais stressé)meilleur
🔑 Insight clé V7

Les offsets serrés [−5, −12, −25] déclenchent les SO plus tôt → le prix moyen remonte plus rapidement → le TP avg+7 est atteignable avant que le drawdown n'atteigne le SL hard cap. Les offsets "patients" de V6 [−7, −14, −28] laissaient le prix chuter trop avant de moyenner, ce qui faisait passer certaines journées de dump (16/04) en SL.

Gestion des risques

SL hard cap$4,500= Max DD TopStep trailing
Daily TP kill-switch$4,535$35 au-dessus du SL pour se "détacher" du trailing
Max consecutive losses3puis pause 300s
Rationale Daily TP > Max DD

Une fois $4,535 atteint, la balance passe au-dessus du trailing max DD. Le compte devient "immunisé" contre le trailing pour le reste de la journée, même en cas de flash dump sur un cycle résiduel.

Infrastructure

Stack technique

Code pathbot_DCA/loop2/propfirm/topstep_practice150k/
Service systemdnq-looper-practice-api
Port interne127.0.0.1:8893
Reverse proxyTraefik file provider
Dashboardnq-looper-practice.html

API Endpoints

HealthGET /api/nq-looper-practice/health
StatusGET /api/nq-looper-practice/status
SettingsGET /api/nq-looper-practice/settings
StartPOST /api/nq-looper-practice/start
StopPOST /api/nq-looper-practice/stop

Config finale (config/settings.py)

STRATEGY = { "symbol": "MNQ", "contract_id": "CON.F.US.MNQ.M26", "side": "long", "base_order_contracts": 6, "tp_fixed_pts": 7.0, "exit_be_after_last_so": False, "max_safety_orders": 3, # V7 : martingale offsets serrés (winner grid-search 1368 configs, 18j 0 SL) "so_sizes_contracts": [10, 12, 24], "so_offsets_pts": [5, 12, 25], "place_all_so": True, } RISK = { "max_loss_usd": 4500, # SL hard cap "daily_tp_usd": 4535, # Daily TP kill-switch "max_consecutive_losses": 3, "loss_pause_seconds": 300, } DANGER_WINDOWS = [ # 9 fenêtres Paris (DST-safe via zoneinfo) {"start": "00:00", "end": "09:00", "label": "ASIA_SESSION_RESERVED_SHORT"}, {"start": "14:25", "end": "14:45", "label": "MACRO_US_RELEASE"}, {"start": "15:20", "end": "15:55", "label": "NY_OPEN"}, {"start": "15:55", "end": "16:30", "label": "POST_OPEN_KICKBACK"}, {"start": "16:30", "end": "17:05", "label": "MID_MORNING_US"}, {"start": "18:55", "end": "19:35", "label": "PRE_POWER_HOUR"}, {"start": "19:55", "end": "20:30", "label": "FOMC_OR_2PM_RELEASE"}, {"start": "20:55", "end": "22:05", "label": "NY_CLOSE"}, {"start": "22:55", "end": "23:59", "label": "CME_DAILY_BREAK"}, ]

Actions