"""Korrigierter Aufloesungs-Test. FEHLER im ersten Versuch: der Trail wurde mit dem ATR der JEWEILIGEN Zeitebene skaliert. Damit bleibt das Verhaeltnis Trail/Bar-Spanne konstant — die Aufloesung wird gar nicht variiert. Richtig: Trail in DOLLAR fixieren, nur die Bar-Groesse aendern. Dieselben Einstiegszeitpunkte auf beiden Zeitebenen. """ import sys from datetime import datetime, timedelta, timezone sys.path.insert(0, r"c:\Users\ah\Downloads\tradingrobot") import MetaTrader5 as mt5 from core.exit_model import LIVE, simulate ATR_FIX = 0.30 # $ — fuer BEIDE Zeitebenen identisch mt5.initialize() sym = next(c for c in ("SpotCrude","USOIL","WTI") if mt5.symbol_info(c)) d = {} for lbl, tf, n in (("M5", mt5.TIMEFRAME_M5, 40000), ("M1", mt5.TIMEFRAME_M1, 60000)): b = mt5.copy_rates_from_pos(sym, tf, 0, n) d[lbl] = {"T":[int(x["time"]) for x in b], "H":[float(x["high"]) for x in b], "L":[float(x["low"]) for x in b], "C":[float(x["close"]) for x in b]} mt5.shutdown() print(f"M5 {len(d['M5']['T'])} Bars · M1 {len(d['M1']['T'])} Bars") # gemeinsamer Zeitraum t_von = max(d["M5"]["T"][0], d["M1"]["T"][0]); t_bis = min(d["M5"]["T"][-1], d["M1"]["T"][-1]) import bisect m1T = d["M1"]["T"] paare = [] for i,t in enumerate(d["M5"]["T"]): if not (t_von <= t <= t_bis) or i % 20: continue j = bisect.bisect_left(m1T, t) if 0 < j < len(m1T)-300: paare.append((i,j)) print(f"gemeinsame Einstiege: {len(paare)}") print() print(f"{'Trail $':>9}{'= xATR':>8}{'M5 OeR':>10}{'M1 OeR':>10}{'Differenz':>11}") print("-"*48) for mult in (0.1,0.2,0.3,0.5,0.8,1.0,1.5): p = LIVE.with_(mult=mult) out = {} for lbl, idx in (("M5",0), ("M1",1)): X = d[lbl]; rs=[] for pr in paare: k = pr[idx] rs.append(simulate(X["C"][k], 1, ATR_FIX, X["H"], X["L"], X["C"], k+1, p, timestop=False, use_tp=True)) out[lbl] = sum(rs)/len(rs) print(f"{mult*ATR_FIX:>9.3f}{mult:>8.2f}{out['M5']:>+10.3f}{out['M1']:>+10.3f}" f"{out['M1']-out['M5']:>+11.3f}") print() print("Wird die Differenz bei engem Trail deutlich NEGATIV, ist der M5-Befund") print("'enger ist immer besser' ein Aufloesungs-Artefakt.")