Telegram: Close-Benachrichtigung ab Schwelle + Auto-Squeeze wieder an
Diagnose zu "ich bekomme keine Telegram-Nachrichten mehr": der Kanal war intakt (getMe/getChat ok, Testnachricht zugestellt, keine einzige Fehlermeldung im Log, Tagesreport kam taeglich). Ursache war, dass ALLE NEUN sendenden Ausloeser aus waren - Auto-Squeeze (ueber runtime_state.json, unbemerkt), Auto-Signal, S/R-Close, Flip-Close, 15-Minuten-Regel, Circuit-Breaker und die drei Notfall-Stop-Modi. Jede Abschaltung war fuer sich begruendet; zusammen ergaben sie eine Stille, die niemand beschlossen hatte. Gebaut: engine._check_close_notify - Telegram bei JEDEM geschlossenen Trade ab close_notify_min_eur (50, 0 = aus). Haengt an keiner Automatik, feuert also auch bei manuellem Close und Broker-SL. Der -87-EUR-SL vom 10.08. kam bisher wortlos. Schwelle aus den Daten: bei ~17 Trades/Tag rund 2,4-6,1 Meldungen/Tag, erfasst 54-80 % des bewegten Geldes. Absolute Euro-Schwelle altert mit der Positionsgroesse - bewusst so, ein Mensch denkt in Euro. Der Unterschied zum frueher entfernten Push ist die Schwelle, und sie liegt in der Engine statt in der DB-Schicht. Vorgemerkt statt sofort gesendet, weil der Flat-Zustand dem DB-Schreiber einen Tick voraus sein kann (exit_time IS NULL heisst "noch nicht fertig"). - tests/test_close_notify.py: 7 Tests, Netz abgefangen - Mutationsprobe in beide kritischen Zweige, beide gefangen - Snapshot-Feld close_notify_min (belegt die Schwelle im Prozess) - Auto-Squeeze wieder AN ueber /api/autosqueeze (ini + runtime_state) - v=161 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
35e91474e8
commit
4eb92bf192
@@ -3139,6 +3139,51 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
|
||||
nächster Tick versucht erneut). Eigener `send_telegram`, **nicht** vom
|
||||
`pnl>0`-Gate (`history`) noch vom 5-Min-Cooldown betroffen.
|
||||
|
||||
## ⚠⚠ TELEGRAM WAR NICHT KAPUTT — ES SENDETE NUR NICHTS MEHR (2026-08-11)
|
||||
|
||||
User: „ich bekomme keine Telegram-Nachrichten mehr."
|
||||
✅ **Kanal nachweislich intakt:** `getMe` → `@AH_Oiltrader_bot`, `getChat` → privat
|
||||
„Axel", **Testnachricht zugestellt** (message_id 1764). Im gesamten Log **keine
|
||||
einzige** Fehlermeldung; der Tagesreport kam täglich (08.–11.08. je 07:3x, alle
|
||||
`ok`). Letzte Nicht-Report-Nachricht **07.08. 22:49**, davor am 06.08. 19:33–19:58
|
||||
im 5-Minuten-Takt = die Close-Alarm-Sperre.
|
||||
⚠⚠ **DIE URSACHE: ALLE NEUN AUSLÖSER WAREN AUS** — Auto-Squeeze (über
|
||||
`runtime_state.json`, unbemerkt), Auto-Signal, S/R-Auto-Close, Flip-Close,
|
||||
15-Minuten-Regel, Circuit-Breaker und die **drei** Notfall-Stop-Modi. **Jede
|
||||
Abschaltung war für sich begründet und gemessen; zusammen ergaben sie eine
|
||||
Stille, die niemand beschlossen hatte.** Übrig blieb genau ein Live-Trigger, der
|
||||
🔔 Close-Alarm — und der braucht eine **gerichtete** Empfehlung, die es nur in
|
||||
**5 %** der Zeit gibt (letzte 7 Tage: 508 von 9.976 Zeilen).
|
||||
⚠ Dazu kam: der Trade-Abschluss-Push war früher bewusst entfernt worden. Deshalb
|
||||
kam auch der **−87-€-SL vom 10.08. wortlos**.
|
||||
|
||||
✅ **GEBAUT: Close-Benachrichtigung `engine._check_close_notify`**
|
||||
(`[telegram] close_notify_min_eur = 50`, 0 = aus; Backup
|
||||
`oil_widget_config.ini.bak-2026-08-11-closenotify`). Feuert bei **jedem**
|
||||
geschlossenen Trade ab der Schwelle — **hängt an KEINER Automatik**, also auch
|
||||
bei manuellem Close und Broker-SL. Meldet Betrag, Richtung, Lots, Ein-/Ausstieg,
|
||||
**Schließgrund** und Dauer. Snapshot-Feld `close_notify_min`.
|
||||
⚠ **Schwelle aus den Daten gewählt, nicht geraten:** bei ~17 Trades/Tag liefert
|
||||
50 € rund **2,4–6,1 Meldungen/Tag** und erfasst **54–80 %** des bewegten Geldes.
|
||||
⚠ **Eine absolute Euro-Schwelle altert mit der Positionsgröße** — Median |P&L|
|
||||
über 30 Tage 14,65 €, über die letzten 7 Tage 35,80 €. Bei wachsendem Konto
|
||||
kommen mehr Meldungen. Bewusst so: ein Mensch denkt in Euro.
|
||||
⚠⚠ **Der Unterschied zum entfernten Push ist die SCHWELLE** (der alte feuerte bei
|
||||
jedem Close), und sie liegt in der **Engine**, nicht in der DB-Schicht.
|
||||
⚠ **Vorgemerkt statt sofort gesendet:** der Flat-Zustand kommt aus
|
||||
`trader.snapshot()` und ist dem DB-Schreiber gelegentlich einen Tick voraus —
|
||||
`exit_time IS NULL` heisst „noch nicht fertig", NICHT „kein Trade". Ohne diese
|
||||
Unterscheidung meldete es einen Close **ohne P&L**. Aufgabe nach ~30 s.
|
||||
✅ **7 Tests** (`tests/test_close_notify.py`, Netz abgefangen) + **Mutationsprobe
|
||||
in beide kritischen Zweige**: Schwelle entfernt → `test_unter_schwelle` fällt ·
|
||||
Retry-Fall als „kein Trade" behandelt → `test_db_noch_nicht_fertig` fällt.
|
||||
|
||||
✅ **AUTO-SQUEEZE WIEDER AN** (User-Entscheidung 2026-08-11) — über den offiziellen
|
||||
Toggle `POST /api/autosqueeze`, damit ini UND `runtime_state.json` übereinstimmen
|
||||
(`{"ok":true,"enabled":true}`). Der Config-Wächter meldet ihn seitdem nicht mehr.
|
||||
⚠ Damit läuft die **B5-Abbruchregel** weiter (11/20 Trades) — ohne laufenden
|
||||
Trader wäre sie nie abgelaufen. Latte unverändert: Verhältnis < 1,0 ODER PF < 1.
|
||||
|
||||
## Mobile-UI (web/) & Alarme
|
||||
- Aufbau: **Tab-Navigation ganz oben** (sticky: Dashboard/**SIG Live**/**SIG Anzeige**/Logs/Statistik/News),
|
||||
darunter Header.
|
||||
|
||||
Reference in New Issue
Block a user