diff --git a/CLAUDE.md b/CLAUDE.md index d1204dd..8babccf 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -9038,6 +9038,74 @@ die Auswertung der ENTFERNTEN bzw. HINZUGEFÜGTEN Gruppe für AUSWAHL-Varianten* (Muster `backtest_htf_vola.py`). Ein Intervall von exakt [0,000 … 0,000] ist kein Ergebnis, sondern die Fehlermeldung eines falsch gewählten Tests. +## ⚠⚠ BRK EROEFFNET NICHT — die Ursache liegt eine Ebene ueber dem Feld (2026-08-20, v=202) + +User zweimal: „breakout trades eröffnen immer noch nicht". Die am selben Tag +eingebaute Klartext-Meldung sagt es jetzt wörtlich: +``` +Pending-Entry (squeeze) nicht platzierbar (87.142): +Einsatz 10 % von 58.49 EUR freier Margin = 5.85 EUR, +Mindestlot 0.01 braucht aber 7.46 EUR +``` + +**DIE ARITHMETIK:** +| | | +|---|---| +| Balance | 728,87 € | +| davon **belegt** (Slot 1, 0,92 Lots manuell) | **688,50 €** | +| **frei** | **97,55 €** | +| Mindestlot 0,01 braucht | 7,52 € | +| ➜ **nötiger Prozentsatz** | **8 %** | + +⚠⚠ **`margin_brk` ist ein Prozentsatz der FREIEN Margin, nicht des Kontos** — +und die freie Margin schwankt im Minutentakt mit dem G/V der offenen Position +(gemessen 57,4 … 97,6 € im selben Fenster). Bei 9 % sind das 5,2 … 8,8 € gegen +7,5 € Bedarf: **es funktioniert mal und mal nicht.** Die Änderung von 10 auf 9 +hat die Lage damit **verschlechtert**, nicht verbessert. + +⚠⚠⚠ **DIE EIGENTLICHE URSACHE LIEGT EINE EBENE HÖHER — und sie ist ein echter +Defekt:** `margin_pct` steht in `runtime_state.json` auf **95 %**, in der ini +auf **40 %** (dem am 19.08. dokumentierten User-Stand). `runtime_state` gewinnt +beim Start. **Und das UI-Feld „Einsatz %" wurde am 19.08. ENTFERNT (v=178)** — +es gibt seitdem **keinen Weg mehr, den persistierten Wert zu ändern**; nur der +Endpoint `/api/marginpct` existiert noch. Der Wert überstimmt die ini also +**dauerhaft und still**. +Folge in der Kette: ein manueller Trade nimmt 95 % der freien Margin → übrig +bleiben ~5 % → BRK wendet seine 9 % auf **diesen Rest** an. Aus „BRK bekommt +9 %" wird real **9 % von 5 % des Kontos**. +⚠ Dieselbe Falle wie `auto_signal` am 31.07. Der Unterschied: dort gab es einen +Schalter, um es zu bemerken und zu drehen — hier nicht mehr. + +✅ **DREI DINGE GEBAUT, KEINE DAVON ÄNDERT DIE POSITIONSGRÖSSE** (die ist +User-Entscheidung, s. Dauerregel): +**(1) `mt5_utils.lot_grund()`** — „Lot-Fehler" erklärt sich selbst, mit Zahlen. +Beide Aufrufer (Market `_send`, Pending `place_stop`) nutzen ihn. ⚠ Anlass: der +Trader meldete einen ganzen Tag lang nur zwei Wörter, während die Ursache ein +Zusammenspiel aus drei Zahlen war. +**(2) Start-Warnung, wenn `runtime_state` die ini überstimmt** — live +verifiziert: *„⚠ Einsatz-%: runtime_state (95 %) ueberstimmt die ini (40 %). Es +gibt KEIN UI-Feld mehr dafuer."* Ohne sie ist der Zustand von aussen +unsichtbar. +**(3) Snapshot `squeeze_block` + BRK-Karte** — statt „keine — Slot frei" steht +dort jetzt der Grund. ⚠ **Ein leerer Slot und ein blockierter Slot sahen vorher +identisch aus**, und der Grund stand nur im Log, zwischen 269 gleichlautenden +Zeilen. + +⚠⚠ **VIERTER FUND: die Log-Drossel griff NIE.** Der Merker lag in EINER +Variable, die beiden Order-Seiten scheitern aber im selben Tick mit +VERSCHIEDENEN Fehlern („Level passiert" oben, „Lot-Fehler" unten) — der Wert +wechselte bei jedem Aufruf. Real 269 Zeilen an einem Tag, 2 je Sekunde. Jetzt +je Order-Seite gemerkt; nach dem Deploy **0** Zeilen. **Eine Drossel, die nie +drosselt, ist schlimmer als keine — sie verdeckt genau die Meldung, die zählt.** + +**DIE DREI WEGE HERAUS (User-Entscheidung, Zahlen zum aktuellen Stand):** +| Weg | Wirkung | +|---|---| +| `margin_brk` auf **25–30 %** | 24–29 € → 0,03 Lots, robust gegen die G/V-Schwankung | +| `margin_pct` auf **40** (= ini, dokumentierter Stand) | wirkt erst auf NEUE manuelle Trades, macht die Reserve dauerhaft | +| offene Position kleiner halten | die einzige Variante, die BRK sofort Luft gibt | +⚠ **Nichts davon wurde eigenmächtig gesetzt.** + ## ⚠⚠⚠ P(break) IST LIVE **INVERTIERT** — und es steuert echtes Geld (2026-08-19) Die fällige Messung ist entscheidbar geworden: **n=530 entkoppelt** gegen die