S/R-Level von M5 auf M30 umgestellt + P(break)-Modell nachtrainiert
User: "DIE S/R Linien liegen oft sehr nahe beieinander" -> Option 2 (beides umstellen, Modell nachtrainieren) gewaehlt. Erst gemessen: backtest_level_tf.py, 80k M5-Bars, 2 Halbjahre, Trades bleiben M5, nur die Level-Quelle variiert. Ergebnis (M30 gewinnt in BEIDEN Haelften): TF AUC(H2) Abstand <1xATR dR bei P<0.55 (H1/H2) M5 0.710 0.61xATR 71% +6698 +7749 (bisher live) M15 0.725 1.16xATR 46% +10138 +12071 M30 0.721 1.95xATR 28% +12424 +13047 <- gewaehlt Die Beschwerde ist damit quantifiziert: 71% der M5-Level lagen naeher als 1xATR. Umsetzung: - wave_rec: _m30_hl gespeichert, neues _pb_levels30 (k=3, letzte 50 M30-Bars = trainingsgleich zum 300-M5-Lookback), im Snapshot. - engine._draw_levels nutzt pb_levels30 (Fallback pb_levels beim Kaltstart); speist Chart, MQL5-CSV, Dashboard UND den P(break)-Auto-Close. - _PB_MU/_PB_SD/_PB_W auf M30 nachtrainiert: out-of-sample validiert (H1->H2), dann auf allen 80k gefittet (34771 Touches, Kalibrierung 23/25, 38/36, 58/59, 86/87). Merkmale bleiben M5. Alte M5-Werte als Kommentar (Rueckweg). - NICHT mitveraendert: Entry-Raum-Gate nutzt weiter M5-pb_levels (entry_room_atr=0.6 ist darauf kalibriert). Verifiziert live: R/S 84.617/83.722 = 2.9xATR Abstand (vorher 0.28xATR), M30-Pivots 4/7 statt M5 27/31, keine Fehler im Log. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
06b37a1474
commit
b77b3d60f5
@@ -1090,8 +1090,26 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
|
||||
das nahe, vorher übersehene Level statt eines weit entfernten Ersatzlevels. Betrifft
|
||||
`_draw_levels` direkt und damit ALLE Konsumenten (PWA-Chart, MQL5-CSV, Dashboard-
|
||||
Kachel, `_sr_close_hint`/Auto-Close) — eine Quelle, ein Fix.
|
||||
**⚠ LEVEL-TF M5→M30 umgestellt (2026-07-30, gemessen `backtest_level_tf.py`):**
|
||||
Auslöser war die User-Beobachtung „die S/R-Linien liegen oft sehr nahe beieinander" —
|
||||
quantifiziert stimmte das: **71 % der M5-Level lagen näher als 1×ATR** (Median-Abstand
|
||||
nur 0,61×ATR). Gemessen über 80k M5-Bars in 2 Halbjahren (Trades bleiben M5, nur die
|
||||
LEVEL-Quelle variiert; Live-Exit + Echtkosten). **M30 gewinnt in BEIDEN Hälften:**
|
||||
Abstand **1,95×ATR** (nur 28 % eng) · AUC out-of-sample **0,721** (M15 0,725, M5 0,710)
|
||||
· R-Ertrag der P(break)-Close-Regel **rund doppelt** (+12.424/+13.047 vs +6.698/+7.749
|
||||
bei P<0,55). M15 lag dazwischen; M30 gewählt wegen des klar besten R-Ertrags und der
|
||||
weitesten Level. **Das P(break)-Modell wurde dafür NACHTRAINIERT** (`_PB_MU/_SD/_W`
|
||||
in `engine.py`): out-of-sample validiert (H1→H2), dann auf allen 80k Bars final
|
||||
gefittet — 34.771 Touches, Basisrate 39,4 %, Kalibrierung trifft (pred/real 23/25 ·
|
||||
38/36 · 58/59 · 86/87). Die **Merkmale bleiben M5** (mom6/mom3 auf M5-Bars), nur die
|
||||
Level sind M30. Quelle live: `wave.pb_levels30` (M30-H/L aus dem 15-s-Turn-Fetch,
|
||||
k=3, letzte 50 Bars = trainingsgleich zum 300-M5-Lookback), Fallback `pb_levels` (M5)
|
||||
beim Kaltstart. ⚠ **NICHT mitverändert: das Entry-Raum-Gate** (`wave._room_gate`) nutzt
|
||||
weiter die M5-`pb_levels` — `entry_room_atr=0.6` ist darauf kalibriert, eine Umstellung
|
||||
dort wäre ungemessen. Alte M5-Modellwerte stehen als Kommentar über `_PB_MU` (Rückweg).
|
||||
Real nach der Umstellung: R/S 84,617/83,722 = 2,9×ATR Abstand (vorher 0,28×ATR).
|
||||
**S/R-Overlay:** `get_bars` liefert `levels {res, sup}` aus **`engine._draw_levels`**
|
||||
= echte Kursstruktur (rohe M5-Pivots aus `wave.pb_levels`, geclustert ~0,5×ATR,
|
||||
= echte Kursstruktur (rohe M30-Pivots aus `wave.pb_levels30`, geclustert ~0,5×ATR,
|
||||
**nur die NÄCHSTE je Seite = 2 Linien total, deckungsgleich mit Dashboard
|
||||
sr-res/sr-sup** — mehr Linien tauchten beim Kurslauf laufend auf/ab, User-Feedback
|
||||
2026-07-14; identisch zur Auto-Close-Logik). ⚠ Bugfix 2026-07-14: vorher
|
||||
|
||||
Reference in New Issue
Block a user