Headless FastAPI-Backend (server.py + core/engine.py) mit Mobile-PWA (web/), Strategie-/Backtest-Suite und Doku. Secrets, DB, Logs und Laufzeit-State sind via .gitignore ausgeschlossen; Config-Vorlage: oil_widget_config.ini.example. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
Risiko-Management (Positionsgröße & Stops)
Stand: 2026-07-08.
Positionsgröße
Aktiv (User-Vorgabe): margin-basiert 95 %.
calc_lotssetzt die Lots auf ~95 % der freien Margin ([trading] margin_buffer_pct=95,risk_pct=0). ⚠ Das ist faktisch All-in: ~7 %+ Konto-Risiko pro Trade (gemessenbacktest_sizing.py: 36 % Wahrscheinlichkeit eines >80 %-Drawdowns). Bewusste Entscheidung — 2026-07-06 kurz auf risiko-basiert 1,5 % gestellt, dann auf 95 % Margin zurück. Der harte Broker-SL wird trotzdem immer gesetzt.
Das risiko-basierte Sizing (calc_lots_risk) ist gebaut, gemessen und
jederzeit aktivierbar ([trading] risk_pct = 1.5 + Restart). Es wählt die Lots
so, dass der Verlust beim Initial-SL ≈ risk_pct % der Equity ist:
val_per_price = tick_value / tick_size # € je 1.0 Preis je 1 Lot
lots = (Equity × risk_pct/100) / (SL_Distanz × val_per_price)
- SL zuerst:
_send_lockedberechnet erst den SL (_calc_sl_tp, Band 1,8–2,2×ATR), dann die Lots aus der echten SL-Distanz. - Margin bleibt Deckel: nie mehr Lots als die freie Margin (× Buffer) erlaubt.
- Fallback: liefert
calc_lots_risk0 (fehlende Daten), greiftcalc_lots. - Vergleich (102-€-Konto, SL 2×ATR≈0,53): 95 % Margin ≈ 0,15 L → −7 € (6,8 %) am SL · 1,5 % Risiko ≈ 0,03 L → −1,40 € (1,4 %).
Stops & Auto-Close
- Harter Broker-SL auf jeder Bot-Order (
req["sl"]) — server-seitig, wirkt auch bei Bot-/Verbindungsausfall. Band 1,8–2,2×ATR (Ziel 2,0; gemessenbacktest_exit.py); Breakeven ab +1,3×ATR; Trailing Init/Trail/Lock (Parameter gemessen optimal,backtest_trailing.py; ATR-Floor 0,06,backtest_atrfloor.py). - Adoptierte Fremd-Trades (in MT5 manuell eröffnet) bekommen beim Erkennen
einen Schutz-SL nachgerüstet (
_refresh_locked), falls keiner gesetzt ist. - Notfall-Stop (P&L ≤ −Wert) + Gewinn-Ziel (P&L ≥ +Wert): server-seitiger
Auto-Close (
engine._check_auto_close, 1-s-Loop, wirkt bei gesperrtem Handy). Notfall-Stop wird beim Öffnen automatisch auf den letzten Wert armiert (Start[trading] auto_emergency_loss, Default 10 — ⚠ bei ~100-€-Konto sind 10 € ≈ 10 % Equity, das ist der faktische Risiko-Deckel). „aus"-Button deaktiviert auch den Auto-Arm. - SL/TP sind im Snapshot + Web sichtbar (Position-Kachel) — fehlender SL wird rot „⚠ kein SL gesetzt!" markiert.
Bewusst NICHT umgesetzt
- Tagesverlust-Schalter / Circuit Breaker: vom User abgelehnt — nicht einbauen (s. CLAUDE.md).
- Signal-Filter als Risiko-Schutz: 5× gemessen wirkungslos/schädlich (Winkel, HTF-Winkel, Konfluenz-Strafe, Gegen-H1-Reversal, ER-Chop-Gate). Schutz läuft über Stops + Sizing, nicht über das Signal.