65ed73977e
Per Podman deploybarer Bot, der Käufe und Verkäufe simuliert ausführt und sich aus den Ergebnissen weiter antrainiert. Aufbau - Einheitliche Bar-Verarbeitung für paper, backtest und live; ausgetauscht werden nur Datenquelle und Broker. - Börsenanbindung über ccxt: rund 100 Börsen allein über exchange.id erreichbar. Zugangsdaten kommen über ENV-Platzhalter, der Live-Modus ist doppelt abgesichert. - Paper-Broker mit Gebühren, Slippage, Börsenpräzision und Volumengrenzen. - Online trainierte logistische Regression bewertet jedes Einstiegssignal. Sie lernt aus realen Trade-Ergebnissen, aus Shadow-Labels aller Kandidaten – auch der abgelehnten – und aus Hintergrund-Stichproben; beim Kaltstart wird sie aus der Kurshistorie vorgelernt. - Risikomanagement: Positions- und Exposure-Grenzen, ATR-Stops, Cooldown sowie Tagesverlust- und Drawdown-Notbremsen. - SQLite-Persistenz, HTTP-Status mit Prometheus-Metriken und Dashboard, Webhooks. Deployment - Containerfile (zweistufig, non-root UID 10001), podman-compose, systemd-Quadlet. - Modell und Datenbank liegen im Volume /data und überleben Neustarts. 128 Tests, ruff sauber. Verifiziert gegen echte Marktdaten sowie im gebauten Container inklusive Healthcheck und Zustandswiederherstellung.
60 lines
1.7 KiB
INI
60 lines
1.7 KiB
INI
# Podman-Quadlet-Einheit – der sauberste Weg, TradeMind dauerhaft laufen zu lassen.
|
||
#
|
||
# Installation (rootless, empfohlen):
|
||
# mkdir -p ~/.config/containers/systemd
|
||
# cp deploy/trademind.container ~/.config/containers/systemd/
|
||
# mkdir -p ~/.config/trademind && cp config/config.yaml config/trademind.env ~/.config/trademind/
|
||
# systemctl --user daemon-reload
|
||
# systemctl --user start trademind
|
||
# systemctl --user status trademind
|
||
# journalctl --user -u trademind -f
|
||
#
|
||
# Damit der Dienst auch ohne aktive Anmeldung läuft:
|
||
# loginctl enable-linger $USER
|
||
#
|
||
# Für den systemweiten Betrieb stattdessen nach /etc/containers/systemd/ kopieren
|
||
# und "systemctl" ohne --user verwenden.
|
||
|
||
[Unit]
|
||
Description=TradeMind – selbstlernender Krypto-Trading-Bot
|
||
Documentation=https://github.com/tlt-turbo/trademind
|
||
After=network-online.target
|
||
Wants=network-online.target
|
||
|
||
[Container]
|
||
Image=localhost/trademind:latest
|
||
ContainerName=trademind
|
||
AutoUpdate=local
|
||
|
||
# Konfiguration schreibgeschützt, Daten persistent
|
||
Volume=%h/.config/trademind:/config:ro,Z
|
||
Volume=trademind-data.volume:/data:Z
|
||
|
||
EnvironmentFile=%h/.config/trademind/trademind.env
|
||
Environment=TRADEMIND_CONFIG=/config/config.yaml
|
||
|
||
Exec=run --config /config/config.yaml
|
||
|
||
# Dashboard/Metriken nur auf dem Loopback-Interface
|
||
PublishPort=127.0.0.1:8080:8080
|
||
|
||
# Härtung
|
||
NoNewPrivileges=true
|
||
DropCapability=ALL
|
||
UserNS=keep-id
|
||
|
||
HealthCmd=python -c "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://127.0.0.1:8080/health', timeout=4).status==200 else 1)"
|
||
HealthInterval=30s
|
||
HealthTimeout=5s
|
||
HealthRetries=3
|
||
HealthStartPeriod=45s
|
||
|
||
[Service]
|
||
Restart=always
|
||
RestartSec=15
|
||
# SIGTERM zuerst – die Engine beendet den laufenden Durchlauf und speichert das Modell.
|
||
TimeoutStopSec=90
|
||
|
||
[Install]
|
||
WantedBy=default.target
|