Files
AH-Oil-Trader/docs/risiko-management.md
T
Axel HocksandClaude Opus 4.8 75d28827e8 Initial commit: Oil Trading Bot (MT5, WTI)
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>
2026-07-24 08:29:23 +02:00

2.7 KiB
Raw Blame History

Risiko-Management (Positionsgröße & Stops)

Stand: 2026-07-08.

Positionsgröße

Aktiv (User-Vorgabe): margin-basiert 95 %. calc_lots setzt 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 (gemessen backtest_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_locked berechnet erst den SL (_calc_sl_tp, Band 1,82,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_risk 0 (fehlende Daten), greift calc_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,82,2×ATR (Ziel 2,0; gemessen backtest_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.