3cd12b67aa
Neuer Abschnitt "Training" im Dashboard mit zwei Bedienelementen und den zugehörigen Endpunkten /control/train/history, /control/train/live und /control/training. Historisches Nachtraining - Kerzenanzahl je Symbol wählbar (500 bis 50 000), Fortschritt und Ergebnis werden im Dashboard angezeigt. - Läuft mit derselben Logik wie ein Backtest, aber ohne zu handeln, und speichert das Modell anschließend. - Handelsdurchlauf und Nachtraining teilen sich einen Mutex, damit sie nicht gleichzeitig auf Modell und Portfolio zugreifen. Die rechenintensive Schleife läuft in einem Worker-Thread, damit der Status-Server antwortbereit bleibt. - Ein zweiter Start wird abgelehnt, solange einer eingereiht ist oder läuft. Kontinuierliches Lernen - Schalter für das Online-Lernen im laufenden Betrieb. Ausgeschaltet handelt der Bot weiter, verändert das Modell aber nicht mehr. Label-Trennung - Vorgemerkte Labels tragen jetzt ein Tag. Ein Nachtraining darf die offenen Labels des Live-Betriebs weder auflösen noch verwerfen; ohne die Trennung würden sie gegen historische Kurse ausgewertet und das Modell mit falschen Ergebnissen gefüttert. - score() liest die Gewichte unter dem Lock, damit ein parallel laufendes Training keinen halb aktualisierten Vektor sichtbar macht. Absicherung - server.control_token (TRADEMIND_CONTROL_TOKEN) schützt alle Steuerbefehle über den Header X-TradeMind-Token; lesende Endpunkte bleiben offen. Ohne Token warnt der Bot beim Start, wenn der Port nicht nur lokal erreichbar ist. - server.enable_control: false entfernt die Routen vollständig. 153 Tests (25 neue), ruff sauber. Im gebauten Container geprüft: 202/409 beim Anstoßen, 401 ohne und mit falschem Token, +1099 Beobachtungen in 4,3 s bei weiterlaufendem Handels-Loop ohne Fehler.
41 lines
1.5 KiB
Bash
41 lines
1.5 KiB
Bash
# Geheimnisse und Laufzeitschalter für TradeMind.
|
||
# Kopieren nach config/trademind.env und NIEMALS committen (.gitignore deckt das ab).
|
||
#
|
||
# podman run --env-file config/trademind.env ...
|
||
# podman-compose --env-file config/trademind.env up
|
||
|
||
# paper | backtest | live
|
||
TRADEMIND_MODE=paper
|
||
|
||
# Börse (ccxt-ID): binance, kraken, coinbase, bybit, okx, kucoin, bitget, gate, mexc, ...
|
||
TRADEMIND_EXCHANGE=binance
|
||
|
||
# true = Testnet/Sandbox der Börse verwenden
|
||
TRADEMIND_SANDBOX=true
|
||
|
||
# API-Zugangsdaten. Im Paper-Modus nicht nötig – dort werden nur öffentliche Kurse gelesen.
|
||
# Für Live: Schlüssel ausschließlich mit Handelsrecht anlegen, Auszahlungen NICHT erlauben,
|
||
# und wenn möglich die IP des Servers hinterlegen.
|
||
TRADEMIND_API_KEY=
|
||
TRADEMIND_API_SECRET=
|
||
# Passphrase – nur bei OKX, KuCoin, Coinbase Advanced, Bitget
|
||
TRADEMIND_API_PASSWORD=
|
||
|
||
# Muss für den Live-Modus wörtlich auf I_UNDERSTAND_THE_RISK stehen.
|
||
TRADEMIND_LIVE_CONFIRMATION=
|
||
|
||
# Optionaler Slack-/Discord-Webhook für Trade-Meldungen
|
||
TRADEMIND_WEBHOOK_URL=
|
||
|
||
# Schützt die Steuerbefehle des Dashboards (Training anstoßen, Lernen umschalten).
|
||
# Leer = ungeschützt. Sobald der Port nicht nur lokal erreichbar ist, unbedingt setzen:
|
||
# openssl rand -hex 24
|
||
TRADEMIND_CONTROL_TOKEN=
|
||
|
||
TRADEMIND_LOG_LEVEL=INFO
|
||
|
||
# Punktuelle Overrides ohne Änderung der YAML-Datei (Muster: TRADEMIND__<ABSCHNITT>__<SCHLUESSEL>)
|
||
# TRADEMIND__RISK__MAX_OPEN_POSITIONS=5
|
||
# TRADEMIND__MARKET__SYMBOLS=BTC/USDT,ETH/USDT,SOL/USDT
|
||
# TRADEMIND__STRATEGY__LEARNER__ENTRY_THRESHOLD=0.6
|