# ───────────────────────────────────────────────────────────────────────────── # TradeMind – Beispielkonfiguration # # Kopieren nach config/config.yaml und anpassen: # cp config/config.example.yaml config/config.yaml # # ${VAR} wird durch die Umgebungsvariable VAR ersetzt (leer = nicht gesetzt) # ${VAR:-wert} nutzt "wert" als Rückfallwert # TRADEMIND__A__B überschreibt zusätzlich den Schlüssel a.b (z. B. TRADEMIND__RISK__MAX_OPEN_POSITIONS=5) # ───────────────────────────────────────────────────────────────────────────── # paper = simulierte Ausführung auf echten Live-Kursen; das Modell trainiert mit ← Standard # backtest = historische Daten im Schnelldurchlauf # live = echte Orders (erfordert live_confirmation + API-Schlüssel) mode: ${TRADEMIND_MODE:-paper} log_level: ${TRADEMIND_LOG_LEVEL:-INFO} # Muss für mode: live wörtlich auf I_UNDERSTAND_THE_RISK stehen. Sicherheitsnetz gegen # versehentlichen Echtgeldhandel. live_confirmation: ${TRADEMIND_LIVE_CONFIRMATION} # ─────────────────────────────── Börsenanbindung ──────────────────────────── # id: jede von ccxt unterstützte Börse. Liste anzeigen mit: trademind exchanges # binance · binanceus · kraken · krakenfutures · coinbase · bybit · okx # kucoin · bitget · gate · mexc · bitstamp · bitfinex · huobi · cryptocom · … exchange: id: ${TRADEMIND_EXCHANGE:-binance} api_key: ${TRADEMIND_API_KEY} api_secret: ${TRADEMIND_API_SECRET} # Passphrase – nötig bei OKX, KuCoin, Coinbase Advanced, Bitget password: ${TRADEMIND_API_PASSWORD} # true = Testnet/Sandbox der Börse (soweit unterstützt). Für die ersten Live-Tests dringend empfohlen. sandbox: ${TRADEMIND_SANDBOX:-true} enable_rate_limit: true timeout_ms: 20000 options: defaultType: spot # spot | swap | future – je nach Börse # ──────────────────────────────── Marktauswahl ────────────────────────────── market: # Alle Symbole müssen dieselbe Quote-Währung haben (hier USDT). symbols: - BTC/USDT - ETH/USDT timeframe: 5m # 1m 3m 5m 15m 30m 1h 2h 4h 6h 8h 12h 1d 3d 1w history_bars: 500 # Kerzen pro Abfrage (Indikatoren brauchen ≥ 140) poll_interval_seconds: 20 # wie oft nach einer neuen Kerze gesehen wird # ───────────────────── Simulation (Modus paper und backtest) ──────────────── paper: starting_balance: 10000 quote_currency: USDT fee_rate: 0.001 # 0,1 % Taker-Gebühr pro Seite slippage_bps: 5 # 5 Basispunkte Ausführungsnachteil max_volume_participation: 0.1 # max. 10 % des Kerzenvolumens pro Order # ────────────────────────── Automatisierter Handel ────────────────────────── trading: # true = der Bot handelt ab dem Start automatisch (bisheriges Verhalten) # false = er sammelt Daten und lernt, eröffnet aber erst nach Freigabe im Dashboard # Positionen. Für den ersten Live-Einsatz die sicherere Wahl. autostart: true # Nur mode: live – Start des Handels über das Dashboard verlangt die ausdrückliche # Bestätigung START_LIVE_TRADING. Pausieren geht immer ohne Bestätigung. require_confirmation_for_live: true # ──────────────────────────────── Risikoregeln ────────────────────────────── risk: max_position_pct: 0.20 # je Position, gemessen an der Equity max_total_exposure_pct: 0.60 # Summe aller Positionen max_open_positions: 3 stop_loss_atr_mult: 2.0 # Stop = Einstieg − 2 × ATR (0 = kein Stop) take_profit_atr_mult: 3.0 # Ziel = Einstieg + 3 × ATR (0 = kein Ziel) trailing_stop_atr_mult: 0.0 # > 0 aktiviert den nachziehenden Stop max_holding_bars: 0 # 0 = unbegrenzt max_daily_loss_pct: 0.05 # Notbremse bis zum nächsten UTC-Tag max_drawdown_pct: 0.25 # Notbremse bis zum Neustart (schließt Positionen) min_notional: 10 # kleinste sinnvolle Ordergröße in Quote-Währung cooldown_bars_after_exit: 3 # Pause pro Symbol nach einem Ausstieg # ───────────────────────────────── Strategie ─────────────────────────────── strategy: # adaptive = Regelwerk erzeugt Signale, das Lernmodell filtert sie # rules = nur das Regelwerk, kein Lernen name: adaptive rules: fast_ema: 12 slow_ema: 26 rsi_period: 14 rsi_oversold: 35 rsi_overbought: 70 atr_period: 14 trend_filter_period: 100 # 0 = Trendfilter aus min_holding_bars: 3 # Signalausstiege erst danach; Stop/Ziel gelten immer # Zusatzmerkmale aus dem Terminmarkt. Die Daten stammen vom Perpetual zum jeweiligen # Spot-Paar (BTC/USDT -> BTC/USDT:USDT); gehandelt wird weiterhin Spot. # # In zwei Backtests (5m über 20 Tage, 15m über 28 Tage) brachten sie KEINE Verbesserung – # die Anbindung funktioniert, die Merkmale trugen nichts bei. Deshalb standardmäßig aus. # Zum Selberprüfen einschalten und gegen einen Lauf ohne vergleichen. # # Achtung: Ein- und Ausschalten ändert die Anzahl der Merkmale. Ein gespeichertes Modell # mit anderer Dimension wird verworfen, das Training beginnt von vorn. derivatives: enabled: false funding_rate: true # was Longs den Shorts zahlen, alle 8h open_interest: true # offene Kontrakte – reicht bei Binance nur 30 Tage zurück oi_change_bars: 12 # über wie viele Kerzen die OI-Veränderung gemessen wird max_pages: 40 # Obergrenze für Seitenabrufe je Symbol min_coverage: 0.9 # darunter gilt die Reihe als unbrauchbar und bleibt neutral learner: enabled: true model_path: /data/models/adaptive.npz entry_threshold: 0.55 # ab welcher Gewinnwahrscheinlichkeit gehandelt wird exploration_rate: 0.05 # Anteil bewusst gegen das Modell gehandelter Signale learning_rate: 0.02 l2: 0.0001 replay_size: 5000 batch_size: 64 train_every_n_samples: 5 warmup_samples: 200 # bis dahin entscheidet allein das Regelwerk label_horizon_bars: 12 # Bewertungsfenster für ein Signal label_target_bps: 30 # 30 bps = 0,3 % Kursziel gilt als Treffer trade_sample_weight: 3.0 # echte Trades zählen dreifach gegenüber Shadow-Labels # Einstiegssignale sind selten. Zusätzliche Stichproben des Marktzustands verkürzen die # Aufwärmphase von Wochen auf Tage (0 = aus). # Der wirksamste Hebel für die Lerngeschwindigkeit: Nur rund 3 % der Beobachtungen # stammen aus echten Trades, der Rest aus diesen Stichproben. Von 10 auf 5 halbiert # die Zeit bis zur Einsatzbereitschaft. # Nicht zu klein wählen – benachbarte Kerzen sind stark korreliert, unter dem halben # label_horizon_bars überlappt praktisch jede Stichprobe mit ihrem Nachbarn. background_sample_every_n_bars: 5 background_sample_weight: 0.5 # Beim Start ein noch untrainiertes Modell aus der Kurshistorie vorlernen, damit der Bot # nach Sekunden einsatzbereit ist statt nach Tagen (0 = aus). bootstrap_bars: 3000 freeze_in_live: false # true = im Live-Modus nicht weiterlernen save_every_n_updates: 50 # ───────────────────────────────── Persistenz ─────────────────────────────── storage: database_path: /data/trademind.sqlite3 # Im Dashboard geänderte Werte. Liegt im beschreibbaren Datenvolume, weil diese Datei # hier üblicherweise read-only eingehängt ist. Löschen = alle Änderungen zurücksetzen. overrides_path: /data/config.overrides.yaml # ─────────────────────────── Status-Server / Monitoring ───────────────────── server: enabled: true host: 0.0.0.0 port: 8080 enable_metrics: true # /metrics im Prometheus-Textformat # Steuerbefehle im Dashboard: historisches Nachtraining anstoßen und das # kontinuierliche Lernen ein-/ausschalten. Auf false setzen für rein lesenden Betrieb. enable_control: true # Schützt ALLE Steuerbefehle (Header X-TradeMind-Token). Lesende Endpunkte bleiben offen. # Dringend empfohlen, sobald der Port nicht nur lokal erreichbar ist. control_token: ${TRADEMIND_CONTROL_TOKEN} # ──────────────────────────────── Benachrichtigungen ──────────────────────── notifications: # Slack- oder Discord-Webhook (leer lassen = aus) webhook_url: ${TRADEMIND_WEBHOOK_URL} notify_on_trade: true notify_on_risk_halt: true # ──────────────── Erklärungen über ein lokales Sprachmodell (Ollama) ──────── # Fasst auf Knopfdruck zusammen, was die Zahlen zeigen. Hat KEINEN Einfluss auf den # Handel – es entscheidet nichts, es formuliert nur. llm: enabled: false base_url: http://127.0.0.1:11434 model: llama3.2 timeout_seconds: 120 temperature: 0.2 max_tokens: 700 max_answer_chars: 2000 # Reasoning-Modelle (qwen3, deepseek-r1) verbrauchen sonst das gesamte Token-Budget für # ihre Denkschritte und liefern eine leere Antwort. Für eine Zustandsbeschreibung # wird kein Reasoning gebraucht. think: false # ───────────────────────────── Backtest-Voreinstellungen ──────────────────── backtest: bars: 5000 start: # z. B. 2024-01-01T00:00:00Z – überschreibt bars end: csv_dir: # OHLCV aus CSV statt von der Börse (Spalten: timestamp,open,high,low,close,volume)