Frontend und API Architektur Trade Optimizer
ID: REQ-TO-005 · Service: trade-optimizer · Status: 🟢 aktiv · Use Case: UC-TO-001, UC-TO-008
Technische Spezifikation des FastAPI Backends und React Frontends für den Trade Optimizer. Der Service aggregiert Daten aus bestehenden Services und stellt einen neuen Navigationspunkt bereit.
Backend
Framework: FastAPI
Language: Python 3.11+
Port: 8004
Endpoints
Analyze
Path: GET /api/v1/trade-optimizer/analyze
Parameter
| Pair |
|---|
| string |
Beschreibung
Hauptendpunkt – ruft Trend, Fundamental und MTF parallel ab (asyncio.gather), berechnet Trade-Setup und erkennt Muster wenn Setup != neutral.
Response Felder
- pair, trend, fundamental, mtf, setup, patterns
Datenquellen
- Trend Analysis API (intern) – 1h Score und Indikator-Zusammenfassung
- Fundamental Analysis API (intern)
- Trend Analysis API (intern) × 4 – MTF Scores parallel (15min, 1h, 4h, daily)
- PostgreSQL market_data.forex_ohlcv (nur wenn Setup != neutral)
Bibliothek
| Feld | Wert |
|---|---|
| Path | GET /api/v1/trade-optimizer/library |
| Beschreibung | Gibt alle 14 Muster aus PATTERN_LIBRARY zurück inkl. SVG-Pfade und vollständiger Erklärungsmetadata. Wird einmalig beim Seitenaufruf geladen. |
Summary
Path: GET /api/v1/trade-optimizer/summary
Parameter
| Pair |
|---|
| string |
Beschreibung: Nur Trend + Fundamental-Zusammenfassung (ohne MTF, Setup, Muster)
Setup
Path: GET /api/v1/trade-optimizer/setup
Parameter
| Pair |
|---|
| string |
Beschreibung: Berechnet Trade-Setup aus kombinierten Scores
Patterns
Path: GET /api/v1/trade-optimizer/patterns
Parameter
Eintrag 1
| Feld | Wert |
|---|---|
| Pair | string |
Eintrag 2
| Feld | Wert |
|---|---|
| Setup | enum [long, short] |
Beschreibung: Erkennt Top 3 Einstiegsmuster auf 5min-Daten (eigenständig aufrufbar)
Health
| Feld | Wert |
|---|---|
| Path | GET /health |
| Beschreibung | Gibt Datenbankstatus zurück |
Abhängigkeiten
- Trend Analysis Service (intern, HTTP) – Score + Indikator-Zusammenfassung + Trade-Setup
- Fundamental Analysis Service (intern, HTTP)
- PostgreSQL (market_data.forex_ohlcv, 5min)
Frontend
Framework: React
Styling: Eigenes CSS (TradeOptimizer.css + shared/TradingAnalysis.css)
Navigation
| Feld | Wert |
|---|---|
| Label | Trade Optimizer |
| Icon | 🎯 |
| Position | Hauptnavigation (nach Trend Analysis) |
Layout
Sektion 1
Name: Währungspaar + Kalender-Hinweis
Komponenten
- Pair Selector (Tabs)
- Wirtschaftskalender Badge + Hinweisbox
- Aktualisieren-Button
Sektion 2
Name: Trendanalyse (1h)
Komponenten
- InterpretationPanel (Score, Kategorie, Indikator-Liste)
Sektion 3
Name: Multi-Timeframe-Ausrichtung
Sichtbar Wenn: immer (wenn data vorhanden)
Komponenten
Eintrag 1
| Feld | Wert |
|---|---|
| Mtftable (4 Spalten | 15min, 1h, 4h, Daily) |
Eintrag 2
| Feld | Wert |
|---|---|
| Je Zeitrahmen | Dot, Score, Kategorie-Label |
- Alignment-Text (z.B. "3/4 bullish – starkes Signal")
Sektion 4
Name: Fundamentalanalyse
Komponenten
- FundamentalScoreCard (Score, Kategorie, Treiber)
Sektion 5
Name: Trade-Setup
Komponenten
- TradeSetupCard
Eintrag 2
| Feld | Wert |
|---|---|
| Long/Short | Entry, SL, TP, RR-Ratio, Begründung, Disclaimer |
- Neutral: "= Neutral" Badge + S/R Referenzlevel (BB, SuperTrend, ATR)
Sektion 6
Name: Erkannte Einstiegsmuster
Sichtbar Wenn: Setup != NEUTRAL und mindestens 1 Muster erkannt
Komponenten
- PatternCard (#1–3) mit Match Score Bar + ℹ-Button
Sektion 7
Name: Musterbibliothek
Sichtbar Wenn: immer (library.length > 0)
Label
| Feld | Wert |
|---|---|
| Long | Long-Muster – Referenz |
| Short | Short-Muster – Referenz |
| Neutral | Musterbibliothek |
Komponenten
- LibraryCard je Muster (SVG + "Was ist es?" + ℹ-Button)
Responsive
| Feld | Wert |
|---|---|
| Mobile | ja (Portrait-Modus, Muster-Body flex-direction column) |
| Desktop | ja |
Docker
| Feld | Wert |
|---|---|
| Image | python:3.11-slim |
| Port Staging | 8014 |
| Port Production | 8004 |
Abnahmekriterien
- [ ] Navigationspunkt "Trade Optimizer" ist in der Hauptnavigation sichtbar
- [ ] Alle 7 Sektionen werden korrekt dargestellt
- [ ] Layout ist responsiv auf Desktop und Mobile
- [ ] Bei NEUTRAL wird Sektion 6 (Erkannte Muster) ausgeblendet, Bibliothek bleibt sichtbar
- [ ] MTF-Tabelle zeigt Scores für alle 4 Zeitrahmen
- [ ] /analyze-Endpunkt aggregiert alle Daten in einem Request (parallel)
- [ ] /library-Endpunkt liefert vollständige Muster-Metadaten
- [ ] Ladezeit der gesamten Seite unter 3 Sekunden
- [ ] API Dokumentation via Swagger unter /docs erreichbar
Changelog
Eintrag 1
Version: 1.0
Changes: Initiale Version
Eintrag 2
Version: 1.1
Changes
Layout auf 7 Sektionen erweitert (MTF + Musterbibliothek immer sichtbar); /analyze als Haupt-Endpoint; /library Endpoint; Styling-Info korrigiert (eigenes CSS statt Tailwind)