Files
Trademind/podman-compose.yml
T
Tobias Zimmermann 65ed73977e 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.
2026-08-22 08:53:04 +02:00

51 lines
1.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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: