rec_outcomes: Fix hat nicht gewirkt - jetzt instrumentiert
Korrektur meiner Behauptung vom 11.08. Nach dem Neustart um 22:45 gab
es bis 09:00 mindestens 10 gerichtete Episoden, und rec_outcomes stand
weiter bei 0 Zeilen. Die Praemisse (falsches dict: s.get("pb_feats")
auf dem MT5Data- statt dem Wave-Snapshot) ist live belegt - die
WIRKUNG des Fixes war es nicht. Ich habe "behoben" geschrieben, ohne
sie zu pruefen.
Warum es von aussen nicht feststellbar war: der except-Zweig loggte
auf DEBUG, der Logger steht auf INFO. Genau die Blindheit, die den
Ausfall fuenf Tage getragen hat.
Jetzt melden sich BEIDE Zweige sichtbar:
- Erfolg: "rec_outcome #<id>: LONG @ <px> atr=<atr>" (INFO)
- Fehlschlag: "rec_outcome NICHT geschrieben: atr=.. px=.. pb_feats=.."
- Exception: WARNING statt DEBUG, mit repr
Es feuert nur bei einem echten Richtungswechsel, also selten - kein
Laerm. Ursache offen bis zur naechsten Episode.
Der Telemetrie-Puls ist der Grund, dass die ausbleibende Wirkung
ueberhaupt auffiel.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
b18b594639
commit
b2a1e35f5e
@@ -6226,6 +6226,18 @@ in 5 Tagen.** `engine._run_analysis` las `s.get("pb_feats")` — `s` ist aber de
|
||||
**MT5Data**-Snapshot (Preis/Trend/Konto); `pb_feats` lebt im **Wave**-Snapshot.
|
||||
Ergebnis: `_atr` immer 0,0 → die Schreibbedingung `_atr > 0` nie erfüllt.
|
||||
✅ **Live belegt:** `market` hat **kein** `pb_feats`, `wave` hat es (ATR 0,12).
|
||||
⚠⚠ **KORREKTUR 2026-08-12: der Fix hat NICHT gewirkt.** Nach dem Neustart am
|
||||
11.08. 22:45 gab es bis 09:00 mindestens **10 gerichtete Episoden** — `rec_outcomes`
|
||||
stand weiter bei **0 Zeilen**. Die Prämisse (falsches dict) ist belegt, die
|
||||
**Wirkung war es nicht** — ich habe „behoben" geschrieben, ohne sie zu prüfen.
|
||||
⚠ Warum es von aussen nicht feststellbar war: der `except`-Zweig loggte auf
|
||||
**DEBUG**, der Logger steht auf INFO — genau die Blindheit, die den Ausfall fünf
|
||||
Tage getragen hat. **Jetzt instrumentiert** (2026-08-12): Erfolg UND Fehlschlag
|
||||
melden sich auf INFO/WARNING, inkl. `atr`/`px`/`pb_feats`-Zustand. Es feuert nur
|
||||
bei einem echten Richtungswechsel, ist also kein Lärm. Die Ursache ist **offen**
|
||||
bis zur nächsten Episode.
|
||||
✅ Der **Telemetrie-Puls** meldet den Zustand seitdem täglich — er ist der Grund,
|
||||
dass die ausbleibende Wirkung überhaupt auffiel.
|
||||
⚠ **Warum keine Prüfung es fing:** es ist **kein** `NameError` (ruff F821 sieht
|
||||
nichts), sondern ein falsches dict — syntaktisch einwandfrei. Und das umgebende
|
||||
`except` loggt auf **DEBUG**, der Logger steht auf INFO. Exakt die Fehlerklasse,
|
||||
|
||||
+16
-2
@@ -1762,16 +1762,30 @@ class TradingEngine:
|
||||
_ws = self.wave.snapshot() or {}
|
||||
_atr = float((_ws.get("pb_feats") or {}).get("atr") or 0.0)
|
||||
_px = float(s.get("bid") or 0.0)
|
||||
# ⚠⚠ DIAGNOSE (2026-08-12): der Fix vom 11.08. hat NICHT gewirkt —
|
||||
# nach 10 Episoden standen weiter 0 Zeilen. Warum, war von
|
||||
# aussen nicht feststellbar, weil der Fehlschlag NUR auf DEBUG
|
||||
# ging und der Logger auf INFO steht. Genau die Blindheit, die
|
||||
# den Ausfall fuenf Tage getragen hat. Beide Zweige melden
|
||||
# sich jetzt auf INFO — es feuert nur bei einem echten
|
||||
# Richtungswechsel, also selten.
|
||||
if not (_atr > 0 and _px > 0):
|
||||
log.info(f"rec_outcome NICHT geschrieben: atr={_atr} px={_px} "
|
||||
f"sig={_sig} (pb_feats={'da' if _ws.get('pb_feats') else 'FEHLT'})")
|
||||
if _atr > 0 and _px > 0 and self.history:
|
||||
self.history.log_rec_outcome(
|
||||
_rid = self.history.log_rec_outcome(
|
||||
signal=_sig, conf_pct=int(rec.get("conf_pct") or 0),
|
||||
tf=str(rec.get("tf") or self.wave.timeframe_name or ""),
|
||||
price=_px, atr=_atr)
|
||||
log.info(f"rec_outcome #{_rid}: {_sig} @ {_px} atr={_atr}")
|
||||
if _sig in ("LONG", "SHORT", "WARTEN"):
|
||||
# WARTEN re-armt: die naechste Richtung ist eine NEUE Episode.
|
||||
self._rec_epi_sig = _sig if _sig != "WARTEN" else None
|
||||
except Exception as e:
|
||||
log.debug(f"log_rec_outcome: {e}")
|
||||
# ⚠ war `log.debug` — damit blieb ein Fehlschlag unsichtbar, obwohl
|
||||
# der Logger auf INFO steht. Die Ausnahme feuert nur bei einem
|
||||
# Richtungswechsel, also selten; WARNING ist hier kein Lärm.
|
||||
log.warning(f"log_rec_outcome: {e!r}")
|
||||
|
||||
# Verdict-Stimmen-Logging (2026-07-24, Idee 2b): Modul-Votes 1×/min in die
|
||||
# DB (`verdict_votes`), damit die UNBELEGTEN Stimmen (KI-Copilot, Elliott)
|
||||
|
||||
Reference in New Issue
Block a user