From e8de83143c844912501f4a6d2d81899fe9fabed6 Mon Sep 17 00:00:00 2001 From: Axel Hocks Date: Tue, 11 Aug 2026 22:11:40 +0200 Subject: [PATCH] M15-Karte: Klartext-Kopfzeile (v=162) User: "kannst du die M15-Empfehlung vereinfachen, wie: jetzt long/short zu xxx Prozent". Der Wunsch ist berechtigt - die Karte war sieben Zeilen Technik. Die Form nicht: eine Richtungs-Prognose ist ueber 1.071 Live-Episoden mit 48-51 % Trefferquote gemessen (frei AUC 0,52 IN-sample), und die Prozentzahl war als conf_pct nicht kalibriert, in H2 invertiert. Genau daran ist die Gesamtempfehlung gescheitert und wurde entfernt - es waere der vierte Rueckfall dieser Karte in die Veto->Richtung-Falle gewesen. Gebaut ist stattdessen eine Zeile, die sagt WAS ZU TUN IST, mit der einen kalibrierten Prozentzahl: P(break) des Einstiegs-Levels (AUC 0,65 oos) - eine Aussage ueber die Struktur, nicht ueber den Trade. gruen JETZT: LONG-Order bei 78,768 (Abpraller) - haelt zu 75 % - Ziel 79,033 - SHORT meiden gelb JETZT: warten auf das Level - erlaubt waere LONG gelb JETZT: kein Trend-Veto - die Karte gibt hier keine Richtung rot JETZT: nicht handeln - Spread frisst den Edge "Erlaubt" heisst nicht "empfohlen"; belegt ist nur, dass die Gegenrichtung kostet (-6,60 EUR/Lot). 45-55 % bleibt ohne Richtung. Reine Formulierung, keine Aenderung der Gate-Semantik. Frontend-only, kein Neustart noetig. Beim Bau in die Anfuehrungszeichen-Falle gelaufen (ASCII-Quote als deutsches Schlusszitat -> Unexpected token). node --check hat es gefangen - genau dafuer wurde es eingebaut. Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 40 +++++++++++++++++++++++++++++++++++ web/app.js | 57 ++++++++++++++++++++++++++++++++++++++++++-------- web/index.html | 4 ++-- 3 files changed, 90 insertions(+), 11 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 6641b7e..cfeb01d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -5353,6 +5353,46 @@ nicht führbar — und Schritt 4 ist der EINZIGE belastbare Nachweis, dass neuer Python-Code läuft. Jetzt mit **Punktpfaden**; ein Feld mit Wert `None` zählt als vorhanden (geprüft wird der Schlüssel, nicht der Inhalt). +### ✅ KLARTEXT-KOPFZEILE (2026-08-11, v=162) — und warum NICHT „LONG zu 78 %" + +User: „kannst du die M15-Empfehlung noch etwas vereinfachen, wie: jetzt +long/short zu xxx Prozent?" ✅ **Der Wunsch ist berechtigt** — die Karte war +sieben Zeilen Technik. ⚠⚠ **Die Form nicht:** eine Richtungs-Prognose ist über +**1.071 Live-Episoden mit 48–51 % Trefferquote** gemessen (frei sogar AUC **0,52 +IN-sample** — es steckt keine Richtungsinformation in den Daten), und die +Prozentzahl war als `conf_pct` **nicht kalibriert, in H2 invertiert** (85–100 % → +40 % Trefferquote). **Genau daran ist die Gesamtempfehlung gescheitert** und +wurde am 08.08. auf User-Wunsch entfernt. Es wäre der **vierte** Rückfall dieser +Karte in die Veto→Richtung-Falle gewesen (Code 08.08. · Geometrie 10.08. · +Lesart 10.08.) — diesmal auf Bestellung. + +✅ **Gebaut: eine Klartext-Zeile, die sagt WAS ZU TUN IST**, mit der **einen** +kalibrierten Prozentzahl, die es gibt — P(break) des Levels, an dem eingestiegen +würde (AUC 0,65 oos). Das ist eine Aussage über die **Struktur**, nicht über den +Trade. +| Lage | Kopfzeile | +|---|---| +| Abpraller | `🟢 JETZT: LONG-Order bei 78,768 (Abpraller) · hält zu 75 % · Ziel 79,033 · ⛔ SHORT meiden` | +| Ausbruch | `🟢 JETZT: LONG-Order bei 79,033 (Ausbruch) · Level unentschieden` | +| Level zu weit | `🟡 JETZT: warten auf das Level · erlaubt wäre LONG` | +| **kein Veto** | `🟡 JETZT: kein Trend-Veto — die Karte gibt hier keine Richtung` | +| Spread hoch | `🔴 JETZT: nicht handeln — Spread frisst den Edge (0,35×ATR)` | +⚠ **„Erlaubt" heisst NICHT „empfohlen"** — belegt ist nur, dass die +Gegenrichtung kostet (−6,60 €/Lot, beidhälftig). Die 45–55-%-Zone bleibt +bewusst ohne Richtung („unentschieden"). +⚠ Der **kein-Veto**-Fall ist der ehrlichste: bei flachem M30 ist keine Richtung +ausgeschlossen, und eine zu nennen wäre wieder Prognose. Die Karte sagt dann +ausdrücklich nichts. +⚠ **Reine Formulierung, KEINE Änderung der Gate-Semantik.** Ob der Raum (③b) das +Banner auf gelb ziehen soll, ist ungemessen und bleibt offen. +⚠ Frontend-only (`app.js` + `v`-Bump) → **kein Neustart nötig**, die offene +Position behielt Trailing und Time-Stop. +⚠⚠ **Beim Bau in die dokumentierte Anführungszeichen-Falle gelaufen:** ein +ASCII-`"` als schliessendes deutsches Zitat (`„LONG zu 78 %"`) beendet den +JS-String vorzeitig → `Unexpected token ':'`. **`node --check` hat es gefangen** +(Stufe B) — genau dafür wurde es am 07.08. eingebaut. In Fliesstext gehören +einfache Quotes oder `"` als Schlusszeichen. + ### ⚠⚠ GATE ③b — DIE KARTE PRÜFTE „LEVEL NAH", NIE „RAUM DAHINTER" (2026-08-10) **Anlass: Trade #49671601, −87,03 €** (User: „SL geschlossen trotz LONG-Empfehlung"). diff --git a/web/app.js b/web/app.js index 0e4d2e3..22f8cd6 100644 --- a/web/app.js +++ b/web/app.js @@ -353,22 +353,61 @@ function renderM15(s) { // ── Status: die Kette wird der Reihe nach ausgewertet ──────────────── // ⚠ Das Banner nennt AUSDRUECKLICH keine Richtung. Es sagt, ob die // BEDINGUNGEN fuer eine Order am Level stehen — und was verboten ist. + // ⚠⚠ KLARTEXT-KOPFZEILE (2026-08-11, User: „noch etwas vereinfachen, wie: + // jetzt long/short zu xxx Prozent"). Der Wunsch ist berechtigt — die Karte + // war sieben Zeilen Technik. Umgesetzt ist er aber NICHT als „LONG zu 78 %": + // · eine RICHTUNGS-Prognose ist gemessen ein Münzwurf (48–51 % über 1.071 + // Live-Episoden, `analyze_signal_live.py`; frei sogar AUC 0,52 IN-sample), + // · und die Prozentzahl war als `conf_pct` NICHT kalibriert, in H2 sogar + // invertiert (85–100 % → 40 % Trefferquote, `analyze_verdict_calibration`). + // Genau daran ist die Gesamtempfehlung gescheitert und wurde entfernt. + // Die Zeile sagt deshalb, WAS ZU TUN IST, und nennt die EINE kalibrierte + // Prozentzahl, die es gibt: P(break) des Levels, an dem eingestiegen würde + // (AUC 0,65 oos). Die ist eine Aussage über die STRUKTUR, nicht über den Trade. + // ⚠ Bewusst KEINE Änderung der Gate-Semantik — nur die Formulierung. Ob der + // Raum (③b) das Banner auf gelb ziehen soll, ist ungemessen und bleibt offen. + const erl = b.verboten === "SHORT" ? "LONG" : b.verboten === "LONG" ? "SHORT" : null; + const zi2 = s.ziel; + const pTxt = (lvl) => { + const zz = (s.zonen || []).find(x => x.level === lvl); + if (!zz || zz.p_break == null) return ""; + if (zz.p_break >= 45 && zz.p_break <= 55) return " · Level unentschieden"; + return zz.p_break > 55 + ? ` · bricht zu ${zz.p_break} %` + : ` · hält zu ${100 - zz.p_break} %`; + }; let cls, txt; - if (!kOk && k.ratio != null) { cls = "rot"; txt = "🔴 KEIN TRADE · Kosten zu hoch"; } - else if (!zOk) { + if (!kOk && k.ratio != null) { + cls = "rot"; + txt = `🔴 JETZT: nicht handeln — Spread frisst den Edge (${f(k.ratio)}×ATR)`; + } else if (!erl) { + // Ohne Veto ist keine Richtung ausgeschlossen — und eine zu nennen wäre + // wieder eine Prognose. Die Karte sagt dann ehrlich nichts. cls = "gelb"; - txt = "🟡 WARTEN AUF LEVEL · Kosten passen, Kurs noch zu weit"; + txt = "🟡 JETZT: kein Trend-Veto — die Karte gibt hier keine Richtung"; + } else if (!zOk) { + cls = "gelb"; + const w = nah.length ? "" : ` · nächstes Level ${f((z[0] || {}).gap_atr15)}×ATR entfernt`; + txt = `🟡 JETZT: warten auf das Level${w} · erlaubt wäre ${erl}`; } else { - const nn = nah[0]; cls = "gruen"; - txt = `🟢 BEDINGUNGEN OK @ ${f(nn.level, 3)} · Order ANS LEVEL, nicht zum Markt` - + (b.verboten ? ` · ⛔ ${b.verboten} vermeiden` : ""); + const einstieg = zi2 ? zi2.von : nah[0].level; + const art = zi2 ? "Abpraller" : "Ausbruch"; + txt = `🟢 JETZT: ${erl}-Order bei ${f(einstieg, 3)} (${art})${pTxt(einstieg)}` + + (zi2 ? ` · Ziel ${f(zi2.level, 3)}` : "") + + ` · ⛔ ${b.verboten} meiden`; } st.className = "m15-status " + cls; st.textContent = txt; - st.title = "Sequenzielle Kette: Bias → Kosten → Level. Ein gefallenes Gate lässt " - + "sich NICHT durch ein anderes ausgleichen. ⚠ Die Order-Buttons bleiben " - + "bewusst bedienbar — hartes Blockieren wurde im Projekt verworfen, und " + st.title = "Klartext-Zusammenfassung der Gate-Kette darunter. ⚠ Bewusst KEINE " + + "Angabe wie 'LONG zu 78 %': die Richtung ist über 1.071 Live-Episoden mit " + + "48–51 % Trefferquote gemessen (Münzwurf), und die frühere Konfidenz-Prozent" + + "zahl war nicht kalibriert — in der zweiten Hälfte sogar invertiert. " + + "Genannt wird nur P(break) des Einstiegs-Levels: out-of-sample kalibriert " + + "(AUC 0,65), eine Aussage über die STRUKTUR, nicht über den Trade — live " + + "derzeit rund 7 Pp zu niedrig. 'Erlaubt' heisst NICHT 'empfohlen': belegt " + + "ist nur, dass die Gegenrichtung kostet (−6,60 € je Lot, beidhälftig). " + + "⚠ Die Order-Buttons bleiben bedienbar — hartes Blockieren ist verworfen, " + "Übersteuerungen des Users liefen gemessen 68 % Trefferquote."; } diff --git a/web/index.html b/web/index.html index fad7205..4eaca5f 100644 --- a/web/index.html +++ b/web/index.html @@ -6,7 +6,7 @@ Oil · MT5 - + @@ -354,6 +354,6 @@ - +