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 @@ - +