Blame

ba0abc Claude Code 2026-05-07 16:12:59
feat(ct-128): Trading Bot (Freqtrade) Doku hinzugefuegt
1
# CT 128 `bot` — Trading Bot (Freqtrade)
2
3
> **Zweck:** Automatisierter Krypto-Trading-Bot mit Freqtrade auf Binance Spot/USDC. Inklusive Live-Dashboard und Web-basierter Container-Steuerung.
4
5
## Rolle
6
CT 128 ist der dedizierte Trading-Container. Hier läuft **Freqtrade** — ein Open-Source-Crypto-Trading-Bot — als Docker-Stack mit drei Services:
7
- **freqtrade**: der eigentliche Trading-Bot (Strategie-Execution, Order-Management)
8
- **dashboard**: Nginx-Webserver mit Live-Trading-Übersicht
9
- **ctrl**: Leichtgewichtiger Docker-Control-Proxy für Web-basierte Container-Steuerung
10
11
## Basisdaten
12
- **CT-ID:** 128
13
- **Hostname:** `bot`
14
- **IP:** `192.168.178.97`
15
- **OS:** Ubuntu 24.04
16
- **Ressourcen:** 2 Cores, 2 GB RAM, 20 GB Disk
17
- **Öffentliche URLs:**
18
- `https://bot.ls-cloud.biz` — Trading-Dashboard (via Authelia geschützt)
19
- `https://ui.bot.ls-cloud.biz` — Bot-Steuerungs-UI
20
21
## Technischer Aufbau
22
23
```
24
CT 128 (bot) · 192.168.178.97
25
├── freqtrade (Docker) → localhost:8080 (API)
26
├── dashboard (nginx) → 0.0.0.0:5001 (Web-Dashboard)
27
├── ctrl (Python/Docker) → intern:5003 (Steuer-Proxy)
28
└── Caddy Reverse Proxy (auf Host lscloud)
29
├── bot.ls-cloud.biz → Authelia → :5001
30
└── ui.bot.ls-cloud.biz → :5002
31
```
32
33
- **Freqtrade-Image:** `freqtradeorg/freqtrade:stable`
34
- **Dashboard:** `nginx:alpine` mit statischem HTML (keine externen CDN-Abhängigkeiten)
35
- **Ctrl:** Alpine-basierter Python-Microservice mit Docker-Socket-Zugriff
36
37
## Alle Pfade
38
39
```
40
/opt/freqtrade/ ← Hauptverzeichnis (docker-compose root)
41
├── config.json ← ⭐ Freqtrade-Konfiguration
42
├── docker-compose.yml ← Docker Stack Definition
43
├── nginx.conf ← Dashboard Nginx-Konfiguration
44
├── dashboard.html ← Dashboard HTML (selbst enthalten)
45
46
├── user_data/ ← Freqtrade Datenverzeichnis
47
│ ├── strategies/ ← Trading-Strategien (.py)
48
│ │ ├── MrXScalper.py ← Aktive Strategie
49
│ │ ├── MrXStrategy.py ← Frühere Strategie (langsamer)
50
│ │ ├── MyStrategy.py ← Erste Eigenentwicklung
51
│ │ └── sample_strategy.py ← Freqtrade-Beispiel
52
│ ├── logs/
53
│ │ └── freqtrade.log ← Bot-Logdatei
54
│ └── tradesv3.sqlite ← Trade-Datenbank
55
56
└── ctrl/ ← Docker-Control-Microservice
57
├── Dockerfile
58
└── ctrl.py
59
```
60
61
## Config-Erklärung (`config.json`)
62
63
### Trading-Parameter
64
| Parameter | Wert | Bedeutung |
65
|-----------|------|-----------|
66
| `max_open_trades` | `6` | Maximal 6 gleichzeitige Trades |
67
| `stake_amount` | `15` | 15 USDC pro Trade |
68
| `stake_currency` | `USDC` | Basiswährung |
69
| `tradable_balance_ratio` | `0.95` | 95% des Guthabens nutzbar |
70
| `dry_run` | `false` | **LIVE-Trading** (echte Orders!) |
71
| `timeframe` | `5m` | 5-Minuten-Kerzen |
72
| `cancel_open_orders_on_exit` | `false` | Orders bei Bot-Stopp behalten |
73
74
### Exchange (Binance)
75
```json5
76
{
77
exchange: {
78
name: "binance",
79
key: "***", // Binance API-Key
80
secret: "***", // Binance API-Secret
81
ccxt_config: { enableRateLimit: true },
82
pair_whitelist: [".*/USDC"], // Alle USDC-Paare
83
pair_blacklist: [
84
"BNB/USDC", "USDT/USDC", // Stablecoins & BNB ausgeschlossen
85
"FDUSD/USDC", "USDP/USDC",
86
"TUSD/USDC", "EUR/USDC"
87
]
88
}
89
}
90
```
91
92
### Pair-Filter (Dynamische Paarauswahl)
93
Jeder Zyklus wählt automatisch die 12 liquidesten USDC-Paare:
94
1. **VolumePairList** — Top 12 nach Quote-Volume, refresh alle 30 min
95
2. **AgeFilter** — Nur Coins >60 Tage gelistet
96
3. **SpreadFilter** — Max 0.35% Spread
97
4. **RangeStabilityFilter** — Min 3% Bewegung in 7 Tagen
98
5. **VolatilityFilter** — 2-50% Volatilität (vermeidet tote und zu wilde Märkte)
99
100
### Pricing
101
- Nutzt **Order Book** (Top-Level) für Entry/Exit-Preisermittlung
102
- `price_side: "same"` → gleiche Seite wie Orderrichtung
103
104
### API-Server
105
| Einstellung | Wert |
106
|-------------|------|
107
| Port | `8080` (intern, nur localhost) |
108
| Auth | Username/Password + JWT |
109
| OpenAPI | deaktiviert |
110
| CORS | `*` (für Dashboard) |
111
112
### Telegram-Alerts
113
Freqtrade hat einen **eigenen Telegram-Bot** für Trade-Benachrichtigungen (getrennt vom OpenClaw-Bot).
114
115
### Sonstiges
116
- `force_entry_enable: true` → Manuelle Trade-Einstiege per API möglich
117
- `process_throttle_secs: 5` → 5s Verarbeitungsintervall
118
- `initial_state: "running"` → Startet automatisch mit Trading
119
120
## Strategie: MrXScalper
121
122
**Typ:** Long-only Spot-Scalping auf 5m-Kerzen
123
124
**Signale:**
125
- **EMA9/EMA21** — Lokaler Trendfilter
126
- **RSI-Cross-Up** — Momentum-Trigger (schneller Einstieg)
127
- **BB-Width** — Volatilitätsfilter (keine toten Märkte)
128
- **Volume > 20-MA** — Volumen-Confirmation
129
130
**Risk-Management:**
131
| Parameter | Wert |
132
|-----------|------|
133
| Stoploss | -2.5% (Tight-Stop) |
134
| Trailing Stop | Ja, ab +1.2% |
135
| Trailing Offset | 0.5% |
136
| ROI Stufe 1 | 1.5% sofort |
137
| ROI Stufe 2 | 0.8% nach 20 min |
138
| ROI Stufe 3 | 0.3% nach 1 h |
139
| ROI Stufe 4 | jeder Profit nach 3 h |
140
141
**Order-Typen:** Limit-Orders (Entry + Exit), Market bei Stoploss
142
143
**Hyperopt-fähig:** RSI-Parameter sind optimierbar
144
145
## Dashboard
146
147
Erreichbar unter `https://bot.ls-cloud.biz` (nach Authelia-Login).
148
149
**Funktionen:**
150
- Wallet-Übersicht (Gesamtwert, investiert, Profit)
151
- Offene Trades (Pair, Einstieg, aktueller Kurs, PnL)
152
- Tages-Chart (Canvas-basiert, keine externen Abhängigkeiten)
153
- **Wichtig:** Zeigt Bot-interne Werte, **nicht** das echte Binance-Wallet!
154
155
**Architektur:**
156
- Nginx liefert `dashboard.html` aus
157
- `/api/` → Proxy zu Freqtrade API (Port 8080) mit Basic Auth
158
- `/admin/` → Proxy zu ctrl-Service (Container-Steuerung)
159
- Vollständig selbst enthaltenes HTML/CSS/JS (mobil-tauglich)
160
161
## Betrieb & Wartung
162
163
### Container-Status
164
```bash
165
# Auf dem Proxmox-Host
166
pct status 128
167
pct exec 128 -- docker compose -f /opt/freqtrade/docker-compose.yml ps
168
```
169
170
### Docker-Services steuern
171
```bash
172
# In CT128
173
cd /opt/freqtrade
174
175
# Alle Services neustarten
176
docker compose down && docker compose up -d
177
178
# Logs einsehen
179
docker compose logs -f freqtrade
180
docker compose logs -f --tail 50 freqtrade
181
182
# Nur Config neu laden (ohne Neustart)
183
docker compose restart freqtrade
184
```
185
186
### Config ändern
187
1. Config editieren: `nano /opt/freqtrade/config.json`
188
2. Strategie-Datei editieren: `nano /opt/freqtrade/user_data/strategies/MrXScalper.py`
189
3. Bei Config-Änderung: `docker compose restart freqtrade`
190
4. Bei Strategie-Änderung: `docker compose restart freqtrade`
191
5. Bei docker-compose.yml-Änderung: `docker compose down && docker compose up -d`
192
193
### ⚠️ Live-Trading-Hinweise
194
- `dry_run: false`**Echte Orders auf Binance!**
195
- API-Keys haben Trade-Berechtigung
196
- Vor Änderungen immer prüfen, ob offene Trades existieren
197
- Bei Unsicherheit vorher: `docker compose stop freqtrade`
198
199
### Backup
200
- Gesamtes `/opt/freqtrade/` regelmäßig sichern
201
- Wichtigste Dateien: `config.json`, `user_data/strategies/`, `tradesv3.sqlite`
202
203
## Verknüpfte Dienste
204
205
| Dienst | CT | Zweck |
206
|--------|-----|-------|
207
| Authelia | 113 | Schützt bot.ls-cloud.biz |
208
| Caddy | Host | TLS + Reverse Proxy |
209
| OpenClaw | 109 | KI-Assistent (verwaltet/analysiert den Bot) |
210
211
## Troubleshooting
212
213
| Problem | Check |
214
|---------|-------|
215
| Bot traded nicht | `docker compose logs freqtrade \| grep -i error` |
216
| Dashboard leer | `docker compose logs dashboard` |
217
| Keine Internetverbindung | DNS-Check in CT128: `cat /etc/resolv.conf` (sollte 8.8.8.8 sein) |
218
| API nicht erreichbar | `curl http://localhost:8080/api/v1/ping` |
219
| Config-Fehler | `docker compose logs freqtrade \| head -20` |