Auto-Squeeze: Wiedereinstiegs-Sperre nach jedem Close + Margin 95%
- Nach Notfall/SL/Time-Stop/manuellem Close eröffnet der Auto-Squeeze ~3 min nicht in gleicher Richtung wieder (_SQUEEZE_REENTRY_COOLDOWN_S=180). Verhindert die Open->Instant-Close-Kaskade bei zu engem Stop (real 27.07. -3-EUR-Stop killte Entry #1 in 16s, Squeeze noch aktiv -> sofort Re-Entry #2). - _check_auto_close erfasst Flat-Uebergang (_pos_close_ts/_pos_close_dir via _open_pos_dir); Squeeze-Entry-Pfad prueft ihn nach dem S/R-Cooldown. - margin_buffer_pct 80 -> 95 (User-Vorgabe) - CLAUDE.md aktualisiert Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
ae6bbb2f35
commit
9f34180bc1
@@ -70,6 +70,11 @@ _SQUEEZE_NIGHT = (0, 1, 2, 3, 4, 5, 6, 7) # Auto-Squeeze-Nacht-Sperre (Kostenf
|
||||
_SQUEEZE_SR_COOLDOWN_S = 180.0 # nach S/R-Close kein Auto-Squeeze in GLEICHER Richtung
|
||||
# (sonst Close-„Level hält" vs. Entry-„Level bricht"-
|
||||
# Roundtrip in 1 s; 2026-07-17)
|
||||
_SQUEEZE_REENTRY_COOLDOWN_S = 180.0 # nach JEDEM Close eines Trades (Notfall/SL/Time-Stop/
|
||||
# manuell) kein Gleichrichtungs-Squeeze-Wiedereinstieg —
|
||||
# gegen die Open→Instant-Close-Kaskade bei zu engem Stop
|
||||
# (real 2026-07-27 15:39: −3-€-Stop killte Entry #1 in 16 s,
|
||||
# Squeeze noch aktiv → sofortiger Re-Entry; 2026-07-28)
|
||||
_STARTUP_GRACE_S = 60.0 # nach Bot-Start schließt der Bot 60 s lang KEINEN
|
||||
# laufenden Trade server-seitig (S/R-Close/Notfall/
|
||||
# Time-Stop/Reverse) — die Daten (Preis/ATR/P(break)/
|
||||
@@ -219,6 +224,10 @@ class TradingEngine:
|
||||
self._squeeze_entry_count = 0
|
||||
self._sr_close_ts = 0.0 # Zeit + Richtung des letzten S/R-Closes
|
||||
self._sr_close_dir = None # → Cooldown gegen Gleichrichtungs-Roundtrip
|
||||
self._open_pos_dir = None # Richtung der aktuell offenen Position (LONG/SHORT)
|
||||
self._pos_close_ts = 0.0 # Zeit + Richtung des letzten Positions-Close (JEDE
|
||||
self._pos_close_dir = None # Art) → Squeeze-Wiedereinstiegs-Sperre (gegen die
|
||||
# Open→Instant-Close-Kaskade bei zu engem Notfall-Stop)
|
||||
self._sr_close_min_gain_armed_ticket = None # Ticket, für das die %-Schwelle schon
|
||||
# aus echter Margin berechnet wurde (Retry-Schutz,
|
||||
# s. `_check_auto_close`)
|
||||
@@ -682,10 +691,19 @@ class TradingEngine:
|
||||
ps = self.trader.snapshot()
|
||||
ticket = ps.get("ticket")
|
||||
if not ticket:
|
||||
# Flat-Übergang: hatten wir gerade noch eine Position, merke Zeit+Richtung
|
||||
# → Squeeze-Wiedereinstiegs-Sperre (gegen Open→Instant-Close-Kaskade). Gilt
|
||||
# für JEDE Close-Art (Notfall/SL/Time-Stop/manuell); der S/R-Close hat schon
|
||||
# seinen eigenen Marker, dieser deckt den Rest ab.
|
||||
if self._last_pos_ticket is not None and self._open_pos_dir:
|
||||
self._pos_close_ts = time.time()
|
||||
self._pos_close_dir = self._open_pos_dir
|
||||
self._open_pos_dir = None
|
||||
self._last_pos_ticket = None
|
||||
self._emergency_loss = None
|
||||
self._takeprofit = None
|
||||
return
|
||||
self._open_pos_dir = "LONG" if ps.get("order_type") == 0 else "SHORT"
|
||||
if ticket != self._last_pos_ticket: # neue/wiedererkannte Position
|
||||
self._last_pos_ticket = ticket
|
||||
if ticket == self._emergency_state_ticket:
|
||||
@@ -921,6 +939,13 @@ class TradingEngine:
|
||||
if (d == self._sr_close_dir
|
||||
and time.time() - self._sr_close_ts < _SQUEEZE_SR_COOLDOWN_S):
|
||||
return
|
||||
# Wiedereinstiegs-Sperre nach JEDEM Close (Notfall/SL/Time-Stop/manuell):
|
||||
# nicht sofort in GLEICHER Richtung neu eröffnen — verhindert die
|
||||
# Open→Instant-Close-Kaskade bei zu engem Stop (2026-07-27). `_squeeze_last_sig`
|
||||
# NICHT setzen → nach Ablauf feuert der Ausbruch, falls noch aktiv.
|
||||
if (d == self._pos_close_dir
|
||||
and time.time() - self._pos_close_ts < _SQUEEZE_REENTRY_COOLDOWN_S):
|
||||
return
|
||||
self._squeeze_last_sig = sig
|
||||
if isinstance(self._last_rec, dict):
|
||||
self._last_rec["setup"] = f"SQUEEZE_{d}"
|
||||
|
||||
Reference in New Issue
Block a user