diff --git a/notes/trading/system-docs/modul-01-postgresql.md b/notes/trading/system-docs/modul-01-postgresql.md new file mode 100644 index 0000000..cb20da7 --- /dev/null +++ b/notes/trading/system-docs/modul-01-postgresql.md @@ -0,0 +1,51 @@ +# Modul-01-PostgreSQL — Betriebsdokumentation + +> Erstellt: 20.08.2026 (Rain Ocampo) · Status: ✅ In Betrieb (healthy) + +## Zweck +Zentrale Datenbank des Trading-Systems. Persistiert Marktdaten (OHLCV), Journal- und +Betriebszustände. Keine Strategie, keine Orders — nur zuverlässige Datenspeicherung. + +## Container +| Attribut | Wert | +|----------|------| +| Name | `Modul-01-PostgreSQL` | +| Image | `postgres:16-alpine` (PG 16.13) | +| Port | **55432** (Host) / **5432** (Docker-intern) | +| Netzwerk | `trading-modules` (bridge) | +| IP (intern) | `10.0.13.13` | +| Restart | `unless-stopped` | +| Status | ✅ `healthy` | + +## Credentials (Compose Env) +| Variable | Wert (Default) | Zweck | +|----------|---------------|-------| +| `POSTGRES_DB` | `trading` | Standard-Datenbank | +| `POSTGRES_USER` | `trading` | Standard-User | +| `POSTGRES_PASSWORD` | `trading` | aus `.env`-Defaults `${VAR:-default}` | + +## Konfiguration +- **Image:** `postgres:16-alpine` (schlank, produktionsreif) +- **PGDATA:** `/var/lib/postgresql/data` +- **Docker-interner Servicename:** `Modul-01-PostgreSQL` (von anderen Modulen so referenziert, keine feste IP) +- **Host-Port:** 55432 (für externen DB-Client / DBA-Tooling, nicht für Modul-Kommunikation) + +## Schema +Siehe `modul-03-market-data.md` → Tabelle `public.ohlcv` (Symbol, Timeframe, OHLCV, Timestamps, Provider). +Unique-Constraint `uq_ohlcv_provider_symbol_tf_ts` inkl. Provider für Multi-Broker-Unterstützung. + +## Verbraucher (Module, die schreiben/lesen) +- **Modul-03-Market-Data** → schreibt `ohlcv` (Hauptschreiber) +- **Modul-10-Trade-Journal** → Journal-Daten +- Weitere Module lesen OHLCV für Analyse/Backtesting (Modul-11, 12, 13) + +## Sicherheit +- Creds nur via Environment Variables / Docker-Secrets (Compose `${VAR:-default}`), nie in Doku-Repos hartkodiert +- Host-Port 55432 nur wenn externer Zugriff nötig — kein unnötig öffentlicher Port + +--- +``` +Geändert von: Rain Ocampo +Datum: 20.08.2026 +Grund: Modul-01-Dokumentation nachgetragen (lief bereits produktiv, fehlte in Repo). +``` diff --git a/notes/trading/system-docs/modul-02-rabbitmq.md b/notes/trading/system-docs/modul-02-rabbitmq.md new file mode 100644 index 0000000..282fa6a --- /dev/null +++ b/notes/trading/system-docs/modul-02-rabbitmq.md @@ -0,0 +1,59 @@ +# Modul-02-RabbitMQ — Betriebsdokumentation + +> Erstellt: 20.08.2026 (Rain Ocampo) · Status: ✅ In Betrieb (healthy) + +## Zweck +Zentrale Event-Bus / Message-Queue des Trading-Systems. Verteilte Kommunikation zwischen +den Modulen über Topics/Exchanges. Keine Strategie, keine Orders — nur zuverlässige +Nachrichtenvermittlung. + +## Container +| Attribut | Wert | +|----------|------| +| Name | `Modul-02-RabbitMQ` | +| Image | `rabbitmq:3-management` (RMQ 3.13.7) | +| Ports | **55672** (AMQP, Host) / **15672** (Management-UI, Host) — beide nur intern | +| Netzwerk | `trading-modules` (bridge) | +| IP (intern) | `10.0.13.7` | +| Restart | `unless-stopped` | +| Status | ✅ `healthy` | + +## Credentials (Compose Env) +| Variable | Wert (Default) | Zweck | +|----------|---------------|-------| +| `RABBITMQ_DEFAULT_VHOST` | `trading` | **Default-vhost `trading`** (wichtig!) | +| `RABBITMQ_DEFAULT_USER` | `trading` | Default-User | +| `RABBITMQ_DEFAULT_PASS` | `trading` | aus `.env`-Defaults `${VAR:-default}` | + +## Konfiguration +- **Image:** `rabbitmq:3-management` (inkl. Management-Plugin für UI/Diagnose) +- **Docker-interner Servicename:** `Modul-02-RabbitMQ` (von anderen Modulen so referenziert, keine feste IP) +- **AMQP-Port intern:** 5672 (Host: 55672) +- **Management-Port intern:** 15672 (Host: 15672) +- **vhost `trading`** — alle Trading-Module nutzen diesen Vhost + +## Exchanges & Routing-Keys +Siehe `modul-03-market-data.md` → Exchange `market.data` (topic, durable). + +| Routing-Key | Event-Typ | Wann | +|-------------|-----------|------| +| `market.data.ready` | `MARKET_DATA_READY` | Batch/Import — EIN Event pro Batch | +| `market.data.candle.closed` | `MARKET_CANDLE_CLOSED` | Live — pro abgeschlossener Kerze | + +- Eventschema v1.0: `event_id, event_type, event_version, timestamp, symbol, asset_class, timeframe, provider` + payload. + +## Verbraucher/Produzenten +- **Produzent:** Modul-03-Market-Data (publiziert `market.data.*`) +- **Konsumenten:** Modul-04 ff. (Market Regime, Strategy Engine, Signal Ranking, …) — siehe jeweilige Modul-Doku +- **Consumer-Regel:** `queue_delete` beim Start gegen Zombies (alte, hängende Consumer-Queues entfernen) + +## Sicherheit +- Creds nur via Environment Variables / Docker-Secrets (Compose `${VAR:-default}`), nie in Doku-Repos hartkodiert +- Ports 55672/15672 nur intern — kein unnötig öffentlicher Port + +--- +``` +Geändert von: Rain Ocampo +Datum: 20.08.2026 +Grund: Modul-02-Dokumentation nachgetragen (lief bereits produktiv, fehlte in Repo). +```