Files
Trademind_OpenCode/README.md
T

137 lines
4.1 KiB
Markdown
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.
# TradeMind
Krypto-Tradingbot (Python) mit **Paper-/Simulationsmodus**, **Live-Trading** und **Antrainierung** der Strategie.
Per [Podman](https://podman.io) deploybar. Alle API-Keys werden aus der `config.yaml` oder aus Environment-Variablen gelesen.
## Features
- **Paper / Simulation**: führt Käufe & Verkäufe gegen einen Candles-Feed durch, ohne echtes Geld.
- **Live**: platziert reale Markerorders über [ccxt](https://github.com/ccxt/ccxt) (Binance, Kraken, Coinbase, KuCoin, OKX, Bybit, BitMEX …).
- **Antrainieren** (`train`): evolutionäre Optimierung der Strategie-Parameter + Signalgewichte auf Simulationsdaten (Fitness = gewichteter Return + Sharpe Max-Drawdown).
- **Kernstrategie**: MACD-Cross + RSI + ATR-Stop-Loss.
- **Konfiguration**: eine `config.yaml`, mehrere Exchanges in `state/weights.json` persistierbar.
## Installation (lokal / Dev)
```bash
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -r requirements.txt
python -m trademind --help
```
## Podman (empfohlener Deploy)
```bash
# 1. Build
podman build -t trademind:latest -f Podmanfile .
# 2. Paper-Modus (kein API-Key nötig)
podman run --rm trademind:latest paper --config /app/config.yaml
# 3. Training (Strategie wird antrainiert)
podman run --rm -v $PWD/state:/app/state trademind:latest train --config /app/config.yaml
# 4. Live-Trading (NUR mit echten Keys + sandbox: false)
podman run -it --rm \
-e BINANCE_API_KEY=... \
-e BINANCE_API_SECRET=... \
trademind:latest live --config /app/config.yaml
```
### Mit `podman-compose` (optional)
```bash
pip install podman-compose # ein Mal
podman-compose build
podman-compose up paper # Simulationslauf
podman-compose run --rm train # Antrainieren
podman-compose run --rm live # Live-Zyklus
```
## Konfiguration (`config.yaml`)
```yaml
trading:
base_currency: BTC
quote_currency: USDT
initial_balance: 10000
position_size_pct: 0.10
fee_pct: 0.001
slippage_pct: 0.0005
timeframe: 1h
candles: 500
strategy:
fast_period: 12
slow_period: 26
rsi_overbought: 70
rsi_oversold: 30
atr_stop_mult: 2.5
allow_long: true
allow_short: false
training:
generations: 15
population: 30
seed: 42
state_file: state/weights.json
exchanges:
binance:
api_key: ${BINANCE_API_KEY}
api_secret: ${BINANCE_API_SECRET}
sandbox: true
kraken:
api_key: ${KRAKEN_API_KEY}
api_secret: ${KRAKEN_API_SECRET}
sandbox: true
coinbase:
api_key: ${COINBASE_API_KEY}
api_secret: ${COINBASE_API_SECRET}
sandbox: true
kucoin:
api_key: ${KUCOIN_API_KEY}
api_secret: ${KUCOIN_API_SECRET}
password: ${KUCOIN_PASSPHRASE}
sandbox: true
```
## CLI
```
trademind paper # Paper-/Simulationslauf (Echte Marktkurse, Orders nur simuliert)
trademind live # ein Live-Zyklus (echte Orders)
trademind train # optimiert die Strategie-Parameter & -gewichte
trademind show # zeigt die geladene Konfiguration (Keys maskiert)
```
### Kursdatenquellen (paper & train)
Die Standard-Modus `--data auto` nutzt **echte Marktkurse** über die öffentliche
ccxt-API (Binance ist default) keine API-Keys nötig. Bei Erreichbarkeitsproblemen
fällt automatisch auf generierte mock-Daten zurück.
```
trademind paper --data live --exchange kraken # zwingend live (sonst Fehler)
trademind paper --data mock # deterministische Offline-Daten
trademind train --data live --exchange coinbase # Training auf echten Kursdaten
```
## Antrainieren im Detail
`trademind train` erzeugt eine Population randomisierter Parameter
(`fast/slow/signal`, `rsi_*`, `atr_stop_mult`, Signalgewichte) und optimiert sie per
Elitismus + Crossover + Mutation so, dass die gewichtete Fitness gestiegen ist:
```
Fitness = 0.6 × TotalReturn + 0.3 × (Sharpe/10) 0.1 × MaxDrawdown
```
Das Ergebnis wird in `state/weights.json` gespeichert und bei `paper` / `live`
automatisch geladen.
## Sicherheit / Haftung
- Paper-/Simulationsmodus nutzt **keine** echten Order.
- Live-Orders sind **auf eigenes Risiko**. Es gibt keine Garantie für Erträge.
- API-Keys niemals committen.
## Tests
```bash
pip install pytest
python -m pytest
```