Files
AH-Oil-Trader/analyze_verworfene_slippage.py
T
Axel HocksandClaude Opus 5 7e03e481ca Verworfene Setups auf der Ausfuehrungs-Achse — und der Squeeze steht mit auf null
User: "backteste alle verworfenen Signale". Bewusst kein Komplettlauf (der lief
am 04.08., 14 Klassen, alle blieben verworfen) — neu ist genau eine Achse, der
Einstiegspreis, angewandt mit der heutigen Korrektur (Fill bei BERUEHRUNG statt
bei Schluss-Bruch) und nur dort, wo sie greifen kann: stehendes Level +
Ausbruchsrichtung.

Ergebnis (Variante C, 80k M5, 2 Halbjahre):
  KONTROLLE Squeeze  +0,133/+0,293   (reproduziert touchfill — Pipeline ok)
  ORB (4 Varianten)  faellt durch    (bestaetigt 2026-07-17)
  PDH/PDL            +0,246/+0,464
  Asian Range        +0,142/+0,134
  Equal H/L          +0,218/+0,170
Alle drei nachbar-robust (11 Zellen, keine kippt).

⚠ Das sind keine drei neuen Signale: PDH/PDL, Asian-Range-Extrem, Equal H/L und
die Squeeze-Box sind dasselbe — waagerechtes Level aus frueheren Extremen,
gebrochen, ruhende Order, kanonisches Trailing. Deckt sich mit der Kontrolle
"beliebige Box" aus dem Multi-Instrument-Lauf.

⚠⚠ Mit der gemessenen Exit-Slippage bleibt fast nichts uebrig. Beim guenstigsten
Wert (0,0124 $, Tagfenster): PDH/PDL +0,099/+0,386 haelt, Equal H/L duenn, Asian
Range faellt — und der LIVE laufende Auto-Squeeze steht in H1 bei -0,002.
Die Edges dieser Familie liegen in derselben Groessenordnung wie die
Ausstiegskosten, und die Slippage-Zahl ist eine Untergrenze.

Konsequenz: kein neues Setup bauen. Der naechste Hebel ist die
Ausfuehrungsqualitaet am EXIT, nicht ein weiteres Einstiegs-Signal.

Offen und benannt: Volume-Profile-LVN und die Chartmuster-Nackenlinie
qualifizieren sich, wurden aber nicht gemessen (Laufzeit bzw. Detektor).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 22:21:06 +02:00

58 lines
2.4 KiB
Python

"""Halten die drei Ueberlebenden auch mit gemessener Exit-Slippage?
`backtest_verworfene_v2.lauf` rechnet nur den Spread. Aus
`analyze_slippage_holdtime.py`: E[Slippage] >= 0,0370 $ ueber alle Stunden,
0,0124 $ im Fenster 10-17. Bei ATR_M5 ~0,15 sind das 0,08-0,25 R je Trade —
gegen Edges von +0,13..+0,25 ist das nicht vernachlaessigbar.
"""
import sys
sys.path.insert(0, r"c:\Users\ah\Downloads\tradingrobot")
import MetaTrader5 as mt5
from backtest_cost_gate import _atr_series, kennzahlen
from core.exit_model import LIVE, simulate
import backtest_verworfene_v2 as V
mt5.initialize(); sym = "SpotCrude"
b = mt5.copy_rates_from_pos(sym, mt5.TIMEFRAME_M5, 0, 80000)
point = mt5.symbol_info(sym).point
mt5.shutdown()
H=[float(x["high"]) for x in b]; L=[float(x["low"]) for x in b]
C=[float(x["close"]) for x in b]; T=[int(x["time"]) for x in b]
SP=[float(x["spread"])*point for x in b]
A=_atr_series(H,L,C); m=len(C)//2
def lauf_slip(levels, lo, hi, slip_usd):
ev=[]
for ab,bis,lvl,d in levels:
for i in range(max(ab,1), min(bis+1, len(C)-2)):
atr=A[i-1]
if not atr or atr < V._ATRMIN: continue
if not ((H[i]>=lvl) if d>0 else (L[i]<=lvl)): continue
ev.append((i,d,lvl,atr,SP[i])); break
ev.sort(); rs=[]; frei=lo
for i,d,entry,atr,sp in ev:
if not (lo<=i<hi) or i<frei: continue
r,xb=simulate(entry,d,atr,H,L,C,i+1,LIVE,timestop=True,use_tp=True,ret_bar=True)
rs.append(r-(sp if sp>0 else 0.0225)/atr - slip_usd/atr)
frei=xb+1
return rs
setups=[("KONTROLLE Squeeze", V.squeeze_kontrolle(H,L,C,A)),
("PDH / PDL Bruch", V.tagesextrem(H,L,T)),
("Asian Range Bruch", V.asia(H,L,T)),
("Equal H/L Bruch", V.equal_hl(H,L,A))]
print("="*92)
print(" EXIT-SLIPPAGE angesetzt (gemessen: >=0,0124 $ im Tagfenster, >=0,0370 $ gesamt)")
print("="*92)
print(f" {'Setup':<22} {'0,000 $':>18} {'0,0124 $':>18} {'0,0370 $':>18}")
for name,lv in setups:
z=f" {name:<22}"
for s in (0.0, 0.0124, 0.0370):
k1=kennzahlen(lauf_slip(lv,0,m,s)); k2=kennzahlen(lauf_slip(lv,m,len(C),s))
z += (f" {k1['oer']:>+7.3f}/{k2['oer']:>+7.3f}" if k1 and k2 else f" {'—':^16}")
print(z)
print()
print(" ⚠ Die Edges liegen bei +0,13..+0,25 R — eine Slippage von 0,08..0,25 R")
print(" je Trade ist dagegen keine Randgroesse, sondern der entscheidende Posten.")