From c3c6a8ce5feb7e1567f9cb08f14de6bdc013b252 Mon Sep 17 00:00:00 2001 From: Axel Hocks Date: Fri, 24 Jul 2026 20:21:17 +0200 Subject: [PATCH] =?UTF-8?q?Gewinn-Close-Automatik=20wieder=20AN:=203%=20Ma?= =?UTF-8?q?rgin=20beim=20=C3=96ffnen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sr_close_min_gain_pct=3.0 (User-Vorgabe; Notfall-Stop-Automatik bleibt aus). Retry-sichere Armierung unverändert. Co-Authored-By: Claude Opus 4.8 --- CLAUDE.md | 23 ++++++++++++----------- core/config.py | 10 ++++++---- oil_widget_config.ini.example | 2 +- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index ca0adcf..1e7ddba 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -595,17 +595,18 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche: `set_sr_close_min_gain` · Snapshot `sr_close_min_gain`): unter der EUR-Schwelle wird am Level NICHT geschlossen. ⚠ Gemessen ist OHNE besser (Verworfen-Eintrag) — Opt-in auf User-Wunsch, UI-Status warnt. **Automatisch auf X % des Einsatzes - (`[trading] sr_close_min_gain_pct`) — Stand 2026-07-24 AUF 0 = AUS (User-Vorgabe - „gewinn close … nicht setzen beim Eröffnen"; war kurz 1,0→3,0 am 2026-07-23).** - Bei `pct>0` wird bei JEDER echt neuen Position (nicht beim Wiedererkennen nach - Neustart) `sr_close_min_gain` frisch auf `pct% × Margin dieser Position` gesetzt - (`_check_auto_close`, Margin aus `trader.refresh()` im selben `_pos_loop`-Tick, - persistiert via `_save_runtime_state`, Log „Gewinn-Close armiert … +X (N% Margin - Y)"). Bei `pct=0` (aktuell) wird beim Öffnen NICHTS gesetzt — es bleibt der - manuell im UI gesetzte/gemerkte `sr_close_min_gain` (Default 0). ⚠ Beim Abschalten - 2026-07-24 auch den persistierten Alt-Wert in `runtime_state.json` auf 0 gesetzt - (stand auf 17,17 vom letzten 3%-Auto-Set), sonst hätte ihn jeder neue Trade als - festen Mindestgewinn geerbt. Mechanik im Code erhalten (reaktivierbar via ini). + (`[trading] sr_close_min_gain_pct=3.0`) — Stand 2026-07-24 abends wieder AN + (Verlauf: 1,0→3,0 am 07-23 · 0 am 07-24 früh „nichts beim Öffnen setzen" · + 3,0 am 07-24 abends auf User-Wunsch zurück — gilt NUR für den Gewinn-Close, der + Auto-Notfall-Stop bleibt AUS).** Bei `pct>0` wird bei JEDER echt neuen Position + (nicht beim Wiedererkennen nach Neustart) `sr_close_min_gain` frisch auf + `pct% × Margin dieser Position` gesetzt (`_check_auto_close`, retry-sicher via + `_sr_close_min_gain_armed_ticket` — Margin aus `trader.refresh()` im selben + `_pos_loop`-Tick, jeden Tick erneut versucht bis Margin>0; persistiert via + `_save_runtime_state`, Log „Gewinn-Close armiert … +X (N% Margin Y)"). Bei `pct=0` + wird beim Öffnen NICHTS gesetzt — dann bleibt der manuell im UI gesetzte/gemerkte + `sr_close_min_gain` maßgeblich (beim 0-Stellen am 07-24 auch den persistierten + Alt-Wert 17,17 in `runtime_state.json` genullt — Erb-Falle). **Gate verifiziert (2026-07-23, User-Nachfrage „darf nicht schließen bevor der Wert erreicht wurde"):** `_check_sr_close` prüft `pnl < sr_close_min_gain → return` **bevor** `_sr_close_hint`/`trader.close` überhaupt aufgerufen werden — isoliert diff --git a/core/config.py b/core/config.py index 1b843de..7b35418 100644 --- a/core/config.py +++ b/core/config.py @@ -288,10 +288,12 @@ DEFAULT_CONFIG = { # Sektion: verliert monoton in beiden Hälften) — bewusster User-Opt-in. "sr_close_min_gain": "0", # Gewinn-Close automatisch auf X % des EINSATZES (Margin) der jeweiligen Position - # setzen, sobald sie eröffnet wird. 0 = AUS (User-Vorgabe 2026-07-24: NICHTS beim - # Öffnen setzen — der manuell gesetzte/gemerkte `sr_close_min_gain` bleibt dann - # maßgeblich). War kurz 1,0→3,0 (2026-07-23), auf User-Wunsch wieder 0. - "sr_close_min_gain_pct": "0", + # setzen, sobald sie eröffnet wird. Verlauf: 1,0→3,0 (2026-07-23) → 0 (2026-07-24 + # früh, „nichts beim Öffnen setzen") → **3,0 wieder AN (2026-07-24 abends, + # User-Vorgabe — gilt NUR für den Gewinn-Close; der Notfall-Stop + # `auto_emergency_margin_pct` bleibt 0/aus)**. 0 = aus (dann bleibt der manuell + # gesetzte/gemerkte `sr_close_min_gain` maßgeblich). + "sr_close_min_gain_pct": "3.0", # Auto-Notfall-Stop als % der Balance beim Öffnen (skaliert mit dem Konto). # >0 → Stop = pct% × Balance; 0 = aus. ⚠ Nur zusammen mit risk_pct>0 als # GAP-NETZ sinnvoll (dann pct ≈ 2× risk_pct → feuert nur bei Slippage/Gap diff --git a/oil_widget_config.ini.example b/oil_widget_config.ini.example index b75ca40..9ec57e8 100644 --- a/oil_widget_config.ini.example +++ b/oil_widget_config.ini.example @@ -43,7 +43,7 @@ auto_sr_close = true sr_close_pbreak = 0.55 export_mql5_levels = true sr_close_min_gain = 0 -sr_close_min_gain_pct = 0 +sr_close_min_gain_pct = 3.0 startup_close_grace_s = 60 [gemini]