Trailing tat nichts - beide Gruende waren richtig, nur unsichtbar (v=203)

User: "trailing scheint nicht zu funktionieren wenn man es einmal manuell
aktiviert hat und dann wieder einschaltet."

AM LOG UND AM ZUSTAND NACHGEPRUEFT - es lief die ganze Zeit:
  19:30:52  Manuelle SL/TP-Aenderung erkannt (SL 87.297) -> Trailing abgeschaltet
  19:31:01  AKTIVIERT  ATR=0.5689 (M30)  mult=1.0x
  danach     phase=Init, HW 87.39, enabled=true, trail_mult=1.0
`toggle()` setzt alles sauber zurueck (High-Water, Phase, _last_sl/_last_tp,
TF und Mult werden neu eingefroren). Es war KEIN Defekt.

WARUM ES TROTZDEM NICHTS TAT - zwei Gruende, beide korrekt:
(a) Phase "Init": der Trail springt erst ab `trail_start` an, und der steht
    seit HEUTE auf 1,3xATR (war 0,3). Der Gewinn lag bei 0,13xATR - also
    Faktor 10 zu frueh. Wer die alte Einstellung gewohnt ist, erwartet den
    Trail zehnmal frueher als er kommt.
(b) Er lockert einen Stop NIE. Nach der Handeingabe lag der SL bei 87.300,
    der Trail haette HW-1,0xATR = 86.821 gewollt - deutlich schlechter. Also
    zu Recht keine Aenderung. Um 87.300 zu schlagen, braeuchte es HW >= 87.869.

DER EIGENTLICHE MANGEL WAR DIE SICHTBARKEIT: die Trailing-KARTE ist seit dem
22.07. ausgeblendet (User-Vorgabe). Damit gab es KEINE Stelle mehr, an der man
Phase, High-Water oder den gewollten Stop sehen konnte - "es tut nichts" und
"es wartet zu Recht" sahen identisch aus.

GEBAUT: `engine._trail_info()` -> Snapshot `trail_info` -> Zeile `#trail-note`
in der Meldungen-Karte. Live:
  "Trailing wartet - springt ab 1.3xATR Gewinn an (jetzt 0.38x, also ab Kurs
   88.054)."
Drei weitere Zustaende: "Trailing AUS - nur der Broker-SL schuetzt", "laeuft,
zieht aber NICHT nach: sein Stop waere X, der gesetzte Y ist enger", und
"laeuft - zieht den Stop auf X nach".
⚠ Nur ZUSAMMENGESETZT aus dem, was der Snapshot ohnehin enthaelt - kein
zweiter Rechenweg (der Konsens-Pfeil-Fehler).

⚠⚠ BEINAHE-FEHLER beim Bau, gefangen: der Block landete in `renderKontext(snap)`,
mein Code las aber `d.trail_info`. Ein ReferenceError haette den GESAMTEN Render
abgebrochen (Dashboard friert auf Altwerten ein) - genau die Klasse, die am
01.08. schon einmal zugeschlagen hat. `node --check` sieht das NICHT. Gefunden,
weil ich die umgebende Funktion nachgelesen habe, und danach mit einem
Minimal-DOM gegengeprueft (snap / leer / null - alle drei laufen durch).

NEBENBEI: der Kommentar an `_TRAIL_START_ATR` sagte weiterhin "0,3", der Wert
ist 1,3. Genau diese Zahl macht den Unterschied, um den es hier geht.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-20 19:36:30 +02:00
co-authored by Claude Opus 5
parent b5a841d52e
commit 437ab56598
4 changed files with 79 additions and 5 deletions
+5 -1
View File
@@ -63,7 +63,11 @@ _ATR_MIN = 0.06 # Untergrenze ATR. 0,12→0,06 gesenkt (gemessen,
# jemand dort, ändern sich Live-Verhalten UND Messung gemeinsam.
from core.exit_model import LIVE as _EXIT
_TRAIL_START_ATR = _EXIT.trail_start # 0,3 — Phase 1→2: ab hier HW-Trailing
_TRAIL_START_ATR = _EXIT.trail_start # 1,3 (war 0,3 bis 2026-08-20) — Phase 1→2:
# ab hier HW-Trailing. ⚠ Der Wert lebt in
# `exit_model.LIVE`, hier steht nur der
# Verweis — die Zahl im Kommentar war
# nach der Aenderung stale.
_BREAKEVEN_ATR = _EXIT.be # 1,3 — Entry-Floor (Breakeven). 0,6 war zu
# eng: 21 % der Trades wurden auf Breakeven gescratcht
# (backtest_exit.py be). 1,3 = gemessenes Plateau-Optimum: