From 14b3fd4f645dcd8879958cc2db5c3a046622ea23 Mon Sep 17 00:00:00 2001 From: Axel Hocks Date: Thu, 20 Aug 2026 09:15:48 +0200 Subject: [PATCH] Vierter Slot-Durchgang: Chart-Marker deckte den BRK-Slot nicht ab MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User-Auftrag (vierte Runde). Diesmal die Bereiche AUSSERHALB von engine.py geprueft - core/trader.py, server.py, der MQL5-Export und die Zustandspersistenz. ⑦ BEHOBEN - Trade-Marker im MT5-Chart (`TR;`-Zeilen) lasen nur `self.trader.snapshot()`. Eine offene BRK-Position blieb im Chart also UNMARKIERT: die hellgruene Umrandung der Einstiegskerze fehlte. Kosmetisch, aber dieselbe Klasse wie Deployment-Drift Fall 8 - nicht die Strategie driftet, sondern ihre Beobachtbarkeit. Wer den Chart ansieht, soll sehen, wo der Bot eingestiegen ist. Jetzt ueber beide Slots. DREI ENTLASTUNGEN in diesem Durchgang (geprueft, NICHT vermutet): - core/trader.py hat als einzige Klassen-Variable `_STEUER_TTL_S` (eine Konstante); der Steuer-Cache liegt als `self._steuer_cache` INSTANZWEISE vor. Modul-Globale sind nur die zwei Logger. Die beiden TradeManager teilen also KEINEN veraenderlichen Zustand - zusammen mit dem Trailing-Befund aus Durchgang 3 ist damit beides sauber. - server.py routet ueber `eng.close` (deckt seit heute beide Slots), `eng.toggle_trail` (ebenfalls) und `eng.set_sltp`. - `emergency_state.json` ist per-Ticket und betrifft nur Slot 1 - die drei Notfall-Modi stehen ohnehin auf 0, und der Reichweiten-Waechter meldet es, falls einer eingeschaltet wird, waehrend BRK eine Position haelt. ⚠ WEITER OFFEN, unveraendert und bewusst: `set_sltp()` (nur Slot 1, braucht eine UI-Entscheidung) und `_check_auto_m15`, das `_slot()` umgeht. Neu dazu: `_check_close_alert` (Flip-Alarm) liest ebenfalls nur Slot 1 - das ist ein Hinweis, keine Schutzhandlung, und der Flip-Close ist aus. 91 Tests gruen, Pipeline inkl. Stufe E gruen, Deploy verifiziert. Co-Authored-By: Claude Opus 5 --- core/engine.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/core/engine.py b/core/engine.py index 2d9fa46..2ff0137 100644 --- a/core/engine.py +++ b/core/engine.py @@ -3498,9 +3498,16 @@ class TradingEngine: try: boff = self.trader._broker_offset_s() marks: list[tuple[str, int]] = [] - ps = self.trader.snapshot() - if ps.get("ticket") and ps.get("open_time"): - marks.append(("O", int(float(ps["open_time"]) + boff))) + # ⚠⚠ BEIDE Slots markieren (Fix 2026-08-20). Vorher nur + # `self.trader` — eine offene BRK-Position blieb im + # MT5-Chart UNMARKIERT. Dieselbe Klasse wie + # Deployment-Drift Fall 8: nicht die Strategie driftet, + # sondern ihre Beobachtbarkeit. Wer den Chart ansieht, + # soll sehen, wo der Bot eingestiegen ist. + for _tr in (self.trader, self.trader_brk): + ps = _tr.snapshot() + if ps.get("ticket") and ps.get("open_time"): + marks.append(("O", int(float(ps["open_time"]) + boff))) for t in (self.history.last_closed_trades(_TRADE_MARKS) or []): if t.get("entry_time"): marks.append(("O", int(float(t["entry_time"]) + boff)))