TP-Anzeige entwirrt: doppelten Wert entfernt, Init-Formel ehrlich beschriftet

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 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-20 09:07:22 +02:00
co-authored by Claude Opus 5
parent 6f1348adf3
commit d59d0eeaee
2 changed files with 14 additions and 7 deletions
+8 -3
View File
@@ -444,8 +444,14 @@ function renderM15(s, snap) {
`Stop Loss: <b>${f(sl, 3)}</b> <span class="dim">(2,0×ATR_M15)</span>`];
if (geg) zl2.push(`TP1: <b>${f(geg.level, 3)}</b> <span class="dim">(Level · ` +
`${100 - (geg.p_break ?? 50)} % haelt)</span>`);
// ⚠⚠ 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: <b>${f(lg ? e + 3.5 * atr : e - 3.5 * atr, 3)}</b> ` +
`<span class="dim">(3,5×ATR — das Trailing fuehrt ihn nach)</span>`);
`<span class="dim">(Init-Ziel 3,5×ATR — ab Phase Trail zieht der ` +
`TP an den Bestkurs heran, ∓0,5×ATR)</span>`);
if (k120) zl2.push(`TP3: <b>${f(lg ? k120.hi : k120.lo, 3)}</b> ` +
`<span class="dim">(Kegel 120, trifft ${Math.round(k120.coverage || 0)} %)</span>`);
sb.innerHTML = zl2.join("<br>");
@@ -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);