User-Auftrag (dritte Runde). Diesmal die Bereiche ausserhalb der
`self.trader.`-Zugriffe geprueft. ZWEI neue Funde, beide behoben:
⑤ toggle_trail() schaltete NUR `self.trail`. Hielt allein der BRK-Slot eine
Position, liess sich dessen Trailing per Dashboard weder ein- noch
ausschalten. ⚠ Das ist keine Kosmetik: ohne `trail_brk` laeuft ein BRK-Trade
in der gemessen DURCHGEFALLENEN SL-only-Variante (backtest_brk_slonly.py,
alle zehn KI enthalten die Null, Trefferquote faellt 40 -> 21 %).
Neu: haelt NUR BRK etwas, wird dessen Trailing geschaltet; sonst (auch bei
zwei offenen Positionen) das von Slot 1 - die Position, die der Nutzer selbst
geoeffnet hat.
⑥ Die Wiedereinstiegs-Sperre sah den BRK-Slot NICHT. `_check_auto_close` setzt
`_pos_close_ts`/`_pos_close_dir` aus `self.trader.snapshot()`; schloss eine
BRK-Position, blieb die Sperre unarmiert und der Squeeze durfte sofort in
dieselbe Richtung neu eroeffnen. Genau die Open->Instant-Close-Kaskade, gegen
die _SQUEEZE_REENTRY_COOLDOWN_S am 27.07. gebaut wurde.
Neu `_check_brk_close_cooldown` im _pos_loop. ⚠ Bewusst DIESELBEN Felder wie
Slot 1: die Sperre ist eine Aussage ueber den MARKT ("in diese Richtung
gerade nicht"), nicht ueber einen Slot.
GEPRUEFT UND SAUBER in diesem Durchgang:
- core/trailing.py hat KEINE Klassen-Variablen und keine veraenderlichen
Modul-Globalen -> die zwei TrailingManager-Instanzen sind vollstaendig
unabhaengig. Das war die groesste offene Sorge.
- _check_close_notify arbeitet ueber history.trade_by_ticket, also DB-basiert
und slot-unabhaengig.
⚠ WEITER OFFEN, bewusst nicht angefasst: `set_sltp()` wirkt nur auf Slot 1 (die
SL/TP-Felder koennen eine BRK-Position nicht anpassen) - das ist eine
UI-Entscheidung, welches Feld zu welchem Slot gehoert, und braucht eine Vorgabe
statt eines stillen Fixes. Ebenso `_check_auto_m15`, das `self.trader.open_long`
VOR dem `_open`-Aufruf bindet und damit `_slot()` umgeht (funktioniert derzeit
nur, weil beide dasselbe liefern).
91 Tests gruen, Pipeline inkl. der neuen Stufe E gruen, Deploy verifiziert.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>