From d59d0eeaee3cd5402e4bce4282ac9dc6b0e5f6f4 Mon Sep 17 00:00:00 2001 From: Axel Hocks Date: Thu, 20 Aug 2026 09:07:22 +0200 Subject: [PATCH] TP-Anzeige entwirrt: doppelten Wert entfernt, Init-Formel ehrlich beschriftet MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User-Frage "unterscheidet sich TP von TP1, TP2 oder TP3?" - sie deckte zwei Fehler auf, beide von mir aus der vorigen Aenderung. ⚠ ZUERST DIE SACHE SELBST: der TP WIRD nachgezogen, aber nach DREI Formeln: Init Entry ± 3,5xATR fest, gibt dem Trade Luft Trail Bestkurs ∓ 0,5xATR zieht mit dem Hoch mit Lock Bestkurs ∓ 0,3xATR sehr eng am Hoch immer mindestens Entry ± 0,5xATR (schliesst nie im Verlust) Er springt beim Phasenwechsel also von WEIT VOR dem Kurs auf KNAPP HINTER das Hoch - ab Phase Trail ist er faktisch ein zweiter, engerer Ausstieg ueber dem Stop. 63 TP-Setzungen im Log bestaetigen das. ① BEHOBEN - "TP2 · Trailing" in der Trade-Leiste zeigte DENSELBEN Wert wie das Feld "TP" daneben. Eine Zahl doppelt. Entfernt; uebrig bleiben TP1 (Level) und TP3 (Kegel) als das, was sie sind: Orientierungsmarken, die der Broker-TP NICHT kennt. Das Feld "TP" bleibt editierbar. ② BEHOBEN - im M15-Setup-Block stand "TP2: ... (3,5xATR - das Trailing fuehrt ihn nach)". Das war irrefuehrend: 3,5xATR ist NUR die Init-Formel, und ab Phase Trail laeuft der TP nach einer anderen Regel. Jetzt: "Init-Ziel 3,5xATR - ab Phase Trail zieht der TP an den Bestkurs heran, ∓0,5xATR". Verifiziert: 0 verbliebene tb-tp2-Referenzen in JS und HTML, span/div ausgeglichen, keine doppelten IDs, node --check und Render-Probe gruen. Reine Frontend-Aenderung (v=197), kein Neustart. Co-Authored-By: Claude Opus 5 --- web/app.js | 11 ++++++++--- web/index.html | 10 ++++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/web/app.js b/web/app.js index abbe7ab..dc2b563 100644 --- a/web/app.js +++ b/web/app.js @@ -444,8 +444,14 @@ function renderM15(s, snap) { `Stop Loss: ${f(sl, 3)} (2,0×ATR_M15)`]; if (geg) zl2.push(`TP1: ${f(geg.level, 3)} (Level · ` + `${100 - (geg.p_break ?? 50)} % haelt)`); + // ⚠⚠ Das ist die INIT-Formel. Ab Phase "Trail" laeuft der Broker-TP nach + // einer ANDEREN Regel: `Bestkurs ∓ 0,5×ATR` (in "Lock" sogar ∓0,3×ATR), + // also knapp HINTER dem Hoch statt weit davor. Wer 3,5×ATR fuer ein + // festes Ziel haelt, liegt ab dem Phasenwechsel daneben — deshalb steht + // es hier ausdruecklich dran. zl2.push(`TP2: ${f(lg ? e + 3.5 * atr : e - 3.5 * atr, 3)} ` + - `(3,5×ATR — das Trailing fuehrt ihn nach)`); + `(Init-Ziel 3,5×ATR — ab Phase Trail zieht der ` + + `TP an den Bestkurs heran, ∓0,5×ATR)`); if (k120) zl2.push(`TP3: ${f(lg ? k120.hi : k120.lo, 3)} ` + `(Kegel 120′, trifft ${Math.round(k120.coverage || 0)} %)`); sb.innerHTML = zl2.join("
"); @@ -1215,8 +1221,7 @@ function render(d) { $("tb-tp1").textContent = ziel ? `${fmt(ziel.level, 3)} (${100 - (ziel.p_break ?? 50)}% hält)` : "—"; - // TP2 — der Broker-TP, den das Trailing fuehrt - $("tb-tp2").textContent = p.tp ? fmt(p.tp, 3) : "—"; + // ⚠ TP2 entfernt — es zeigte denselben Wert wie das Feld `tb-tp`. // TP3 — Obergrenze des 80-%-Kegels auf 120 min const lv = ((d.cone || {}).levels) || []; const k = lv.find(x => x.band === 80 && x.minutes === 120); diff --git a/web/index.html b/web/index.html index e5d9365..e104bf5 100644 --- a/web/index.html +++ b/web/index.html @@ -12,7 +12,7 @@ ⚠ LOKAL eingebunden, kein CDN: die PWA laeuft ueber WireGuard und muss offline funktionieren. --> - + @@ -90,8 +90,10 @@ - - + @@ -414,6 +416,6 @@ - +