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:
co-authored by
Claude Opus 5
parent
be2c318745
commit
6cf2730dc3
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user