Vertipper-Schutz für Notfall-Stop: Minimum-Floor (emergency_min_eur=3)
Ein manuell gesetzter Notfall-Stop unter dem Minimum wird als "aus" behandelt.
Root-Cause (2026-07-27): User setzte versehentlich -1 €; der Wert lag unter dem
Spread UND vererbte sich per _emergency_remember auf alle Folge-Trades → jeder
neue Trade wurde in Sekunden per Notfall-Close geschlossen ("sofort geschlossen").
Guard in set_emergency, mit 6 Werten getestet. Live-Notfall-Stop zusätzlich auf
0 geräumt.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
fe8b439f1d
commit
873b67a521
@@ -260,6 +260,15 @@ class TradingEngine:
|
||||
# garantiert identische Linien in Kachel/Chart/Close-Meldung + spart Lock-Last
|
||||
self._emergency_loss: float | None = None # aktiver Notfall-Stop (Verlust)
|
||||
self._last_pos_ticket = None # für Auto-Arm beim Öffnen
|
||||
# Mindest-Notfall-Stop (Kontowährung): ein von Hand gesetzter Wert UNTER
|
||||
# diesem Minimum wird als „aus" behandelt statt scharfgestellt — sonst killt
|
||||
# ein Vertipper (z. B. „1") jeden Trade sofort, weil die Schwelle unter dem
|
||||
# Spread liegt UND per _emergency_remember auf ALLE Folge-Trades vererbt wird
|
||||
# (real 2026-07-27: −1-€-Stop schloss Trades in derselben Sekunde). 0 = aus.
|
||||
try:
|
||||
self._emergency_min = max(0.0, float(self.cfg["trading"].get("emergency_min_eur", "3") or 0))
|
||||
except (TypeError, ValueError):
|
||||
self._emergency_min = 3.0
|
||||
# Beim Öffnen einer neuen Position wird der Notfall-Stop automatisch auf
|
||||
# den ZULETZT genutzten Wert gesetzt (gemerkt über Trades hinweg). Start-
|
||||
# wert = [trading] auto_emergency_loss (0 = Auto-Arm aus).
|
||||
@@ -483,6 +492,13 @@ class TradingEngine:
|
||||
v = None
|
||||
except (TypeError, ValueError):
|
||||
v = None
|
||||
# Vertipper-Schutz: ein Wert unter dem Minimum (Spread-Region) würde den
|
||||
# Trade sofort schließen UND sich auf alle Folge-Trades vererben → als „aus"
|
||||
# behandeln (Fix 2026-07-27, real: −1-€-Stop killte jeden Trade sofort).
|
||||
if v is not None and self._emergency_min > 0 and v < self._emergency_min:
|
||||
log.warning(f"Notfall-Stop −{v:.2f} < Minimum {self._emergency_min:.2f} € "
|
||||
f"(zu eng, würde sofort schließen) → als AUS behandelt")
|
||||
v = None
|
||||
self._emergency_loss = v
|
||||
if v is not None:
|
||||
self._emergency_remember = v # für die nächste Position merken
|
||||
|
||||
Reference in New Issue
Block a user