Files
AH-Oil-Trader/docs/gesamtempfehlung.md
T
Axel HocksandClaude Opus 4.8 75d28827e8 Initial commit: Oil Trading Bot (MT5, WTI)
Headless FastAPI-Backend (server.py + core/engine.py) mit Mobile-PWA (web/),
Strategie-/Backtest-Suite und Doku. Secrets, DB, Logs und Laufzeit-State sind
via .gitignore ausgeschlossen; Config-Vorlage: oil_widget_config.ini.example.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-24 08:29:23 +02:00

69 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Gesamtempfehlung (Verdict-Panel)
Grafischer Empfehlungsbereich ganz oben im Mobile-Dashboard (`web/`), der die
Module zu **einer** Aussage zusammenfasst.
## Wer berechnet was
- **Backend (`core/engine.py``_verdict`)** baut die Aggregation und legt sie
als `verdict` in den Snapshot (`/api/snapshot`, `/ws`). Eine Quelle der
Wahrheit — das Frontend rendert nur.
- **Frontend (`web/app.js``renderVerdict`)** zeichnet Ring, Bias-Balken und
Modul-Chips. Markup in `web/index.html` (`#card-verdict`), Stil in
`web/style.css` (`.vd-*`).
## Logik
**Headline = die validierte Welle** (`wave_signal`) — das einzige Modul mit per
Backtest belegtem Edge. Sie bestimmt LONG/SHORT/WARTEN und die Order-Freigabe.
Die übrigen Module bilden nur einen **gewichteten Konsens** (Anzeige, kein
Eingriff in die Order-Logik).
Votes je Modul: `+1` LONG · `1` SHORT · `0` neutral. Gewichte:
| Modul | Gewicht | Quelle |
|-------|---------|--------|
| Welle | **3,0** | `wave_signal.signal` (validierter Edge) |
| M30 | 1,5 | `wave.htf_trend` (EMA12/50 der M30 — exakt das Signal, das die Welle nutzt) |
| H1 | 1,5 | `wave.h1_trend` (EMA12/50 der H1) |
| KI-Copilot | 1,0 *(nur mit Bias)* | `agent.advisory.bias` — ohne advisory/Bias **Gewicht 0** |
| Elliott/FVG | 1,0 *(nur mit Ziel)* | Richtung zum `elliott.target` — ohne Ziel **Gewicht 0** |
| Squeeze | 2,0 *(nur `active`)* | `wave.squeeze` — armed/keine Kompression **Gewicht 0** |
(TradersUnion wurde 2026-07-06 aus dem Konsens entfernt — nur noch Anzeige.)
```
bias = Σ(gewicht · vote) / Σ(gewicht) → 1 … +1
```
**Stimmberechtigt sind nur Module mit Aussage** (Fix 2026-07-15): Module ohne
anwendbares Signal (Squeeze ohne Ausbruch, Elliott ohne Ziel, KI aus) bekommen
Gewicht 0 und stehen NICHT im Nenner — vorher dämpfte z. B. das fast immer
neutrale Squeeze-Gewicht (2,0) die Nadel dauerhaft um ~×0,8 Richtung Mitte.
„Flach" bei Welle/M30/H1 bleibt dagegen eine ECHTE Neutral-Stimme (mit Gewicht).
`bias` steuert die **Nadel** im Balken (1 = ganz SHORT/links, +1 = ganz
LONG/rechts: `left% = (bias+1)/2·100`). `agree/total` = wie viele der **anderen**
stimmberechtigten Module (ohne die Welle selbst — die zählte sich bis 2026-07-15
mit) die Headline-Richtung teilen. Der **Konfidenz-Ring** zeigt `wave.conf_pct`
als conic-gradient in Richtungsfarbe.
> ⚠ Wichtig: Für M30/H1 werden die **EMA12/50-Signale der Welle** genutzt
> (`htf_trend`/`h1_trend`), NICHT das Regressions-Winkelmaß `market.angles` —
> die beiden können sich widersprechen, das Panel muss zur Empfehlung passen.
## Snapshot-Feld `verdict`
```json
{
"headline": "SHORT", "conf": 90, "bias": -1.0, "agree": 3, "total": 3,
"votes": [{"name": "Welle", "vote": -1, "weight": 3.0, "detail": "SHORT · 90%"}, ]
}
```
## Pflege
Neues Modul ins Panel → Vote/Gewicht in `_verdict` ergänzen; das Frontend rendert
`votes` generisch. Bei JS/CSS-Änderung Asset-Version `v=N` in `index.html`
hochzählen. Siehe `CLAUDE.md`.