Flip-Close bekommt Nachrang gegenueber dem S/R-Close (gemessen)
User-Frage "sollten wir den S/R close auch deaktivieren?" -> nein, die
beiden sind gegensaetzlich gemessen. Aber sie konkurrieren seit dem Einbau
um dieselben Trades, und die S/R-Freigabe lief OHNE Flip-Close.
backtest_exit_combo.py (NEU, 80k M5, 2 Halbjahre, Echtkosten, Exit-Kern aus
core/exit_model.py, 5 Varianten auf IDENTISCHEN Entries):
nur S/R-Close H1 +59 · H2 -14 (535/284 S/R-Closes)
nur Flip-Close H1 -1 · H2 -43
BEIDE H1 +56 · H2 -50 (507/252)
BEIDE, Flip nachrangig H1 +62 · H2 -49 (516/260)
KOLLISION BELEGT: der Flip nahm dem S/R-Close 28 bzw. 32 Trades weg
(5-11 %) - genau die, fuer die dieser validiert ist. Mit Nachrang ist es in
BEIDEN Haelften besser als ohne.
Umsetzung: liegt ein S/R-ZIEL <=0,6xATR entfernt (dieselbe Schwelle wie der
Live-Hinweis), haelt der Flip sich zurueck.
[trading] auto_flip_close_subordinate (Default true).
Mit 4 Szenarien getestet: in Reichweite, ausser Reichweite, kein Level,
Nachrang aus.
EHRLICH DAZU: auch mit Nachrang kostet der Flip in H2 rund 35 R gegenueber
"nur S/R-Close" (-49 vs -14). Der Nachrang begrenzt den Schaden, er dreht
ihn nicht um.
METHODIK-FEHLER BEIM BAU, KORRIGIERT: der erste Lauf liess die sequentielle
Sim nach dem Exit bei xb+1 weiterlaufen - dadurch hatte JEDE Variante eine
ANDERE Trade-Folge und die Zahlen waren nicht vergleichbar. Jetzt feste,
geteilte Entry-Liste wie in backtest_pbreak_rvalue.py. (Die zunaechst
gemeldeten Deltas -195/-144 stammten aus diesem konfundierten Lauf.)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
fea91fddb3
commit
3314b6e9b1
@@ -327,6 +327,9 @@ class TradingEngine:
|
||||
self._flip_close_min_r = float(_tf_cfg.get("auto_flip_close_min_r", "0.5"))
|
||||
except (TypeError, ValueError):
|
||||
self._flip_close_min_r = 0.5
|
||||
# Nachrang gegenüber dem S/R-Close (gemessen besser, s. `_check_flip_close`)
|
||||
self._flip_close_subordinate = \
|
||||
_tf_cfg.get("auto_flip_close_subordinate", "true").lower() == "true"
|
||||
self._flip_close_done_ticket = None
|
||||
self._flip_close_count = 0
|
||||
self._pos_close_dir = None # Art) → Squeeze-Wiedereinstiegs-Sperre (gegen die
|
||||
@@ -1488,6 +1491,23 @@ class TradingEngine:
|
||||
return
|
||||
else:
|
||||
return # ohne ATR keine Schwelle → nicht schließen
|
||||
# ── NACHRANG gegenüber dem S/R-Close (gemessen `backtest_exit_combo.py`,
|
||||
# 2026-07-31): liegt ein S/R-ZIEL in Reichweite (≤0,6×ATR, dieselbe
|
||||
# Schwelle wie der Live-Hinweis), hat der **validierte** Exit Vorrang und
|
||||
# der Flip hält sich zurück. Grund: der Flip nahm dem S/R-Close messbar
|
||||
# Trades weg (535→507 in H1, 284→252 in H2 = 5–11 %) — und zwar genau
|
||||
# die, für die dieser validiert ist. Mit Nachrang ist es in BEIDEN
|
||||
# Hälften besser als ohne (H1 +62 statt +56, H2 −49 statt −50).
|
||||
# `auto_flip_close_subordinate=false` schaltet den Nachrang ab.
|
||||
if self._flip_close_subordinate:
|
||||
try:
|
||||
dl = self._draw_levels()
|
||||
tgt = (dl.get("res") or [None])[0] if is_long \
|
||||
else (dl.get("sup") or [None])[0]
|
||||
if tgt is not None and abs(tgt - bid) <= 0.6 * max(atr, 0.06):
|
||||
return # S/R-Ziel in Reichweite → Vorrang dort
|
||||
except Exception:
|
||||
pass
|
||||
self._flip_close_done_ticket = ticket
|
||||
log.info(f"🔄 AUTO-FLIP-CLOSE: Empfehlung dreht auf {sig} — "
|
||||
f"{'LONG' if is_long else 'SHORT'} bei P&L {pnl:+.2f} € "
|
||||
|
||||
Reference in New Issue
Block a user