1dc79b8b64f041d8f36ba2959c5a791f17f739a3
Some checks failed
Deployment / deploy-docker (push) Has been cancelled
- daemon.py: gc.collect() entfernt, robustes Scheduling (last_run_date statt Minuten-Check), Exchange Registry Pattern eingeführt (STREAMING_EXCHANGES/STANDARD_EXCHANGES) - deutsche_boerse.py: Thread-safe User-Agent Rotation bei Rate-Limits, Logging statt print(), Feiertags-Prüfung, aufgeteilte Parse-Methoden - eix.py: Logging statt print(), spezifische Exception-Typen statt blankem except - read.py gelöscht und durch scripts/inspect_gzip.py ersetzt (Streaming-basiert) - Utility-Scripts in scripts/ verschoben (cleanup_duplicates, restore_and_fix, verify_fix)
Trading Data Daemon
Ein modularer Daemon zum Herunterladen und Speichern von Handelsdaten von verschiedenen Börsen in einer Time-Series-Datenbank.
Unterstützte Exchanges
- European Investor Exchange (EIX): Lädt tägliche Kursblatt-CSVs herunter.
- Lang & Schwarz (LS): Fragt die heutigen Trades über deren JSON/CSV-RPC ab.
Architektur
src/exchanges/base.py: Basisklasse für neue Börsen (einfach erweiterbar).src/database/questdb_client.py: Speichert Daten in QuestDB via Influx Line Protocol (ILP).daemon.py: Der Orchestrator, der die Daten abruft und speichert.
Installation und Setup
1. QuestDB (Timeseries DB) starten
Am einfachsten via Docker Compose:
docker-compose up -d
QuestDB ist dann unter http://localhost:9000 erreichbar.
2. Python Abhängigkeiten installieren
pip install -r requirements.txt
3. Systemd Service einrichten
Kopiere die Dateien nach /etc/systemd/system/:
sudo cp systemd/trading-daemon.service /etc/systemd/system/
sudo cp systemd/trading-daemon.timer /etc/systemd/system/
Pfade in trading-daemon.service müssen ggf. angepasst werden (aktuell auf /Users/melchiorreimers/... gesetzt).
Dienste aktivieren:
sudo systemctl daemon-reload
sudo systemctl enable --now trading-daemon.timer
4. Manuell testen
python3 daemon.py
Erweiterung
Um eine neue Börse hinzuzufügen, erstelle einfach eine neue Klasse in src/exchanges/, die von BaseExchange erbt und implementiere fetch_latest_trades(). Füge sie dann in daemon.py zur Liste hinzu.
Description
Languages
Python
72.5%
HTML
21.5%
PowerShell
3.6%
Shell
1.3%
JavaScript
0.9%
Other
0.2%