Wirtschaftskalender-Blackout + Konsolidierungs-Box beschriftet

core/econ_calendar.py (NEU): High-Impact-News-Fenster als Handels-Sperre.
Quelle Forex Factory JSON (kostenlos, kein Key, mit impact-Feld), beide
Wochen (thisweek endet Sa, Markt oeffnet So 23:00 -> sonst blinder Fleck),
1x/h im Daemon-Thread, dedupliziert. Filter: High+USD ODER Oil/OPEC-Titel.

WICHTIG - nicht gemessen: Events sind zu selten fuer eine 2-Stichproben-
Aussage. Das ist die Handbuch-Regel, kein belegter Edge. Deshalb bewusst
asymmetrisch: sperrt NUR die autonomen Entries (Auto-Squeeze + Auto-Signal,
ohne Dedup-Marker -> feuert nach dem Fenster nach), in der Entry-Checkliste
nur "warn" statt "fail". Manuelle Orders bleiben frei. Der gemessene
EIA-Blackout (Mi 15:30-16:30) bleibt unabhaengig aktiv und greift auch
ohne Netz.

Verifiziert: Live-Fetch (EIA korrekt Mi 16:30 Berlin, FOMC/GDP/PCE erkannt)
+ 4 synthetische Szenarien (5 min vor/nach Event, 50 min davor, disabled).

MQL5 v1.30: graue Konsolidierungs-Box beschriftet (User-Frage "was bedeutet
die graue Box") - sichtbares Label an der Oberkante, rechtsbuendig wie die
uebrigen: "Konsolidierung (10-Bar-Spanne)" bzw. bei Kompression
"Konsolidierung - komprimiert, Ausbruch steht bevor". 0 Fehler kompiliert.

Frontend v=122: #cal-note in der Meldungen-Karte (laufendes Fenster bzw.
Vorwarnung <=60 min).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-07-30 22:58:58 +02:00
co-authored by Claude Opus 5
parent 7e0d2a4563
commit a6f370ac02
6 changed files with 284 additions and 8 deletions
+24
View File
@@ -320,6 +320,30 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
dem alten „16 Uhr"-Befund. eia_post/api_pre/api_post NICHT robust → nicht geblockt.
Nur im Live-Pfad (`hour≠None`), Backtests bleiben gate-frei. Best-Practice
„Event-Blackout" statt Pauschal-Gate.
- **Wirtschaftskalender-Blackout (`core/econ_calendar.py`, 2026-07-30, `[trading]
news_blackout=true`, ±15 min):** Erweiterung der EIA-Idee auf ALLE High-Impact-
Termine (FOMC/Zinsentscheid/NFP/CPI/GDP/PCE + alle Oil-/OPEC-Titel). Quelle
**Forex Factory JSON** (`nfs.faireconomy.media`, kostenlos, kein Key, mit
`impact`-Feld); geholt werden **beide Wochen** (`thisweek`+`nextweek` — „thisweek"
endet samstags, der Markt öffnet aber Sonntag 23:00 → sonst blinder Fleck), 1×/h
**im Daemon-Thread** (ein hängender HTTP-Call darf den Trend-Loop nicht blockieren),
dedupliziert über (ts, title). Filter: `impact=High` + `country=USD`, ODER Titel
enthält crude oil/opec/oil inventories/petroleum (der EIA-Report läuft bei FF teils
als Low/Medium). ⚠ **NICHT gemessen** — Events sind zu selten für eine
2-Stichproben-Aussage, das ist die Handbuch-Regel („keine Trades 15 Min. vor
High-Impact-News"), kein belegter Edge. Deshalb bewusst asymmetrisch verdrahtet:
**sperrt nur die AUTONOMEN Entries** (`_check_auto_squeeze` + `_check_auto_signal`,
jeweils OHNE Dedup-Marker → nach dem Fenster feuert das Setup, falls noch aktiv) und
erscheint in der Entry-Checkliste nur als **„warn"**, nicht „fail" (soll den Verdict
nicht allein auf `stop` kippen); **manuelle Orders bleiben frei.** Der gemessene
EIA-Blackout bleibt unabhängig davon aktiv — er greift auch, wenn der Kalender kein
Netz hat (Fail-safe: ohne Daten → kein Blackout, Log 1×, dann still). Snapshot
`calendar {enabled, n, blackout{title,impact,ccy,minutes}, next, age_min}`,
Frontend `#cal-note` (Meldungen-Karte, bernstein: laufendes Fenster bzw. Vorwarnung
≤60 min). Abschalten `news_blackout=false`; Fenster via `news_blackout_before_min`/
`_after_min`. Mit 4 synthetischen Szenarien getestet (5 min vor/nach Event, 50 min
davor = kein Blackout, disabled) + Live-Fetch verifiziert (EIA lag korrekt auf
Mi 16:30 Berlin).
- **Winkel-vs-EMA-Warnung (nur Konfidenz):** Regressions-Winkel der Basis-TF gegen
die EMA-Richtung → 10 „⚠ Winkel gegen EMA (mögliche Wende)" (nachlaufende EMA!);
dafür → +5. `backtest_angle.py`: dafür/neutral +0,055 vs dagegen +0,025; als Gate