15-Min-Regel: Squeeze-Trades ausgenommen (gemessen schaedlich)

Analyse der negativen Autotrader-Trades. Von den drei heute per adverse15
geschlossenen Bot-Trades hat die Regel bei EINEM gerettet (Auto-Signal
11:44, -26,31 EUR; danach lief der Kurs 32 EUR weiter dagegen) und bei den
beiden SQUEEZE-Trades zu frueh gekappt (20:15 / 20:36, -13,77 / -28,09 EUR;
danach waeren +19,28 bzw. +17,60 EUR moeglich gewesen - aus candles_m1
nachgerechnet).

Verdacht bestaetigt: die Schwelle 0,5xATR wurde in backtest_auto_signal.py
auf WAVE-SIGNAL-Entries kalibriert und dann auf ALLE Bot-Trades angewandt.
Wieder ein Kalibrierungs-Bruch.

backtest_adverse15_squeeze.py (NEU, 80k M5, 2 Halbjahre, Echtkosten,
Exit-Kern): auf SQUEEZE-Entries schadet die Regel bei JEDER Schwelle in
BEIDEN Haelften:
    0,3 -> -25/-38 · 0,5 -> -18/-34 · 0,8 -> -12/-39 · 1,2 -> -5/-18
Monoton, also ist die Regel selbst das Problem, nicht ihre Einstellung.
Ohne Regel H1 -54 / H2 +220, mit 0,5 H1 -72 / H2 +186.
Grund: der Squeeze ist runner-abhaengig (43 % Treffer, Ertrag im Tail) -
ein Schnitt nach 15 min trifft genau den Tail.

Umsetzung: _bot_open_source merkt beim Oeffnen, WOMIT eroeffnet wurde;
_check_adverse15 steigt bei auto_squeeze aus. Mit 7 Szenarien getestet.

Fuer den Auto-Signal-Pfad bleibt die Regel aktiv - dort gemessen ~neutral
(OeR +0,001 mit vs +0,026 ohne), also eine Versicherung mit kleiner Praemie.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-07-31 21:52:28 +02:00
co-authored by Claude Opus 5
parent be2c318745
commit 6cf2730dc3
3 changed files with 171 additions and 0 deletions
+18
View File
@@ -311,6 +311,9 @@ class TradingEngine:
except (TypeError, ValueError):
self._adverse15_atr = 0.5
self._bot_open_ticket = None # Ticket, das der Bot selbst eröffnet hat
self._bot_open_source = None # ... und WOMIT (auto_squeeze | auto_signal).
# Nötig, weil die 15-Min-Regel nur für den
# Auto-Signal-Pfad gemessen ist (s. unten).
self._adverse15_done_ticket = None # 15-Min-Prüfung je Ticket nur 1×
self._adverse15_count = 0
self._sr_close_ts = 0.0 # Zeit + Richtung des letzten S/R-Closes
@@ -1227,6 +1230,20 @@ class TradingEngine:
return
if ticket != self._bot_open_ticket: # nur Bot-eröffnete Trades
return
# ⚠ SQUEEZE-TRADES AUSGENOMMEN (gemessen `backtest_adverse15_squeeze.py`,
# 2026-07-31). Die Schwelle 0,5×ATR wurde in `backtest_auto_signal.py` auf
# WAVE-SIGNAL-Entries kalibriert und dann auf ALLE Bot-Trades angewandt —
# wieder ein Kalibrierungs-Bruch. Auf SQUEEZE-Entries schadet die Regel bei
# JEDER Schwelle in BEIDEN Hälften (Δ gegen „ohne Regel": 0,3 → 25/38 ·
# **0,5 → 18/34** · 0,8 → 12/39 · 1,2 → 5/18) — monoton, d. h. die
# Regel selbst ist das Problem, nicht ihre Einstellung. Grund: der Squeeze ist
# runner-abhängig (43 % Treffer, Ertrag im Tail), und ein Schnitt nach 15 min
# trifft genau den Tail. Ohne Regel H1 54/H2 **+220**, mit 0,5 H1 72/H2 +186.
# Anlass war der 31.07.: zwei Squeeze-Trades wurden per adverse15 gekappt
# (13,77 / 28,09 €), danach wären +19,28 bzw. +17,60 € möglich gewesen —
# während dieselbe Regel beim Auto-Signal-Trade desselben Tages 32 € rettete.
if self._bot_open_source == "auto_squeeze":
return
if ticket == self._adverse15_done_ticket: # je Ticket nur 1× prüfen
return
ot = ps.get("open_time") or 0
@@ -1981,6 +1998,7 @@ class TradingEngine:
if source in ("auto_squeeze", "auto_signal"):
try:
self._bot_open_ticket = self.trader.snapshot().get("ticket")
self._bot_open_source = source
self._adverse15_done_ticket = None
except Exception:
pass