diff --git a/CLAUDE.md b/CLAUDE.md index 67eb1bf..7c07439 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1297,7 +1297,29 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche: Durchbruch (55/65 bei Default 0,60, liegt im Optimum-Plateau 0,50–0,60). **Dashboard-Schalter** in der Position-Kachel (`#srclose-btn`, grün=AN) → `POST /api/srclose` (Toggle, - `engine.set_sr_autoclose`); Zustand `snapshot.auto_sr_close`. **AUTO-Close (`_check_sr_close` im `_pos_loop`, + `engine.set_sr_autoclose`); Zustand `snapshot.auto_sr_close`. + ⚠⚠ **AUTOMATISCHER S/R-CLOSE = ABGESCHALTET (User-Vorgabe 2026-08-06, + `[trading] auto_sr_close = false` UND `runtime_state.json`).** Das ist eine + **Abweichung von der Messung**, kein Nachvollzug einer: mit dem am 31.07. + nachtrainierten P(break)-Modell schlägt der gegatete S/R-Close die + Trailing-Baseline in BEIDEN Hälften (Live-Schwelle 0,35 — H1 −149 gegen −506 = + **+357 R**, H2 +1308 gegen −110 = **+1418 R**, `backtest_pbreak_rvalue.py`). + ⚠ Nicht mit dem **pauschalen** S/R-Close verwechseln, der 2× verworfen wurde — + das P(break)-Gate ist genau der Unterschied zwischen „Gewinner-Kappen" und dem + gemessenen Edge. + **Was abgeschaltet ist:** nur die automatische Ausführung (`_check_sr_close` + steigt in Zeile 1 aus). **Was bleibt:** der Hinweis in der App (`#pos-srhint`), + die P(break)-Chart-Linien, der Copilot-Kontext und das Live-Prognose-Tracking + (`pbreak_predictions`) — `_sr_close_hint` wird in `snapshot()` unabhängig vom + Schalter berechnet. **Was weiter schützt:** Broker-SL 2×ATR, Trailing, Time-Stop. + ⚠ **Beide Stellen** mussten gesetzt werden — `runtime_state.json` überschreibt + die ini beim Start (die Falle, durch die `auto_signal` am 31.07. unbemerkt + weiterlief). Neu im **Config-Wächter** (`measurement_reminder.py`, validiert = + `true`), damit die Abweichung sichtbar bleibt. Backups: + `oil_widget_config.ini.bak-2026-08-06-srclose`, `runtime_state.json.bak-…`. + **Zurück:** Dashboard-Schalter `#srclose-btn` (setzt beide Stellen) oder + `auto_sr_close = true` in ini **und** `runtime_state.json`. + Historie: **AUTO-Close (`_check_sr_close` im `_pos_loop`, `auto_sr_close=true`):** schließt **nur im PLUS** (`pnl>0`) wenn `close=True`, 1×/ Ticket, wirkt bei gesperrtem Handy. **Optionaler Mindestgewinn** (`[trading] sr_close_min_gain` Default 0=aus · UI `#srmin-input` · `POST /api/srclose_min` · diff --git a/measurement_reminder.py b/measurement_reminder.py index a4957ef..ced0517 100644 --- a/measurement_reminder.py +++ b/measurement_reminder.py @@ -332,6 +332,21 @@ CONFIG_DEPS = [ "wieder auf true gesetzt, laeuft ein gemessen negativer Exit auf " "echtem Geld - deshalb hier ueberwacht.", }, + { + "key": "auto_sr_close", "test": "backtest_pbreak_rvalue.py", + "validated": "true", + "why": "ABGESCHALTET 2026-08-06 auf User-Wunsch — und das ist eine Abweichung " + "von der Messung, deshalb hier überwacht. Mit dem am 31.07. " + "nachtrainierten P(break)-Modell schlägt der gegatete S/R-Close die " + "Trailing-Baseline in BEIDEN Hälften (bei der Live-Schwelle 0,35: " + "H1 -149 gegen -506 = +357 R, H2 +1308 gegen -110 = +1418 R). " + "⚠ Nicht zu verwechseln mit dem PAUSCHALEN S/R-Close, der 2x verworfen " + "wurde — das P(break)-Gate ist der Unterschied. Was weiter schützt: " + "Broker-SL 2xATR, Trailing, Time-Stop. Der Hinweis in der App und die " + "Chart-Linien bleiben (nur die automatische Ausführung entfällt). " + "⚠ Lebt AUCH in runtime_state.json (UI-Toggle) und wird von dort " + "überschrieben — beim Zurückschalten beide Stellen prüfen.", + }, { "key": "dead_hours", "test": "backtest_hourly_split.py / backtest_realcosts.py", "validated": "", diff --git a/runtime_state.json.bak-2026-08-06-srclose b/runtime_state.json.bak-2026-08-06-srclose new file mode 100644 index 0000000..5f7bd1c --- /dev/null +++ b/runtime_state.json.bak-2026-08-06-srclose @@ -0,0 +1 @@ +{"auto_squeeze": false, "auto_signal": false, "auto_sr_close": true, "sr_close_min_gain": 0.0, "manual_margin": 0.0, "margin_pct": 95.0} \ No newline at end of file