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:
Axel Hocks
2026-07-31 18:15:09 +02:00
co-authored by Claude Opus 5
parent fea91fddb3
commit 3314b6e9b1
3 changed files with 221 additions and 0 deletions
+20
View File
@@ -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 = 511 %) — 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}"