Initial commit: TradeMind – Krypto-Trading-Bot mit Lernmodus
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.
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# Start: podman-compose up -d Logs: podman-compose logs -f
|
||||
# Stop: podman-compose down Build: podman-compose build
|
||||
#
|
||||
# Die Datei funktioniert auch mit docker-compose; ":Z" ist eine SELinux-Kennzeichnung
|
||||
# und wird auf Systemen ohne SELinux ignoriert.
|
||||
|
||||
services:
|
||||
trademind:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Containerfile
|
||||
image: localhost/trademind:latest
|
||||
container_name: trademind
|
||||
restart: unless-stopped
|
||||
|
||||
# Geheimnisse und Schalter – Vorlage: config/trademind.env.example
|
||||
env_file:
|
||||
- ./config/trademind.env
|
||||
|
||||
command: ["run", "--config", "/config/config.yaml"]
|
||||
|
||||
ports:
|
||||
- "127.0.0.1:8080:8080" # Dashboard nur lokal erreichbar
|
||||
|
||||
volumes:
|
||||
- ./config:/config:ro,Z # Konfiguration schreibgeschützt hineinreichen
|
||||
- trademind-data:/data:Z # SQLite-Datenbank und trainiertes Modell
|
||||
|
||||
healthcheck:
|
||||
test: ["CMD", "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)"]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 45s
|
||||
|
||||
# Absicherung: keine zusätzlichen Rechte, Dateisystem nur dort schreibbar, wo nötig.
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
read_only: false
|
||||
tmpfs:
|
||||
- /tmp:size=64m
|
||||
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "5"
|
||||
|
||||
volumes:
|
||||
trademind-data:
|
||||
Reference in New Issue
Block a user