CERBERUS Trading Engine¶
Überblick¶
Zentrales Trading-System. Besteht aus mehreren Komponenten: FastAPI-App, Telegram Bot, Channel Trader, Webhook-API. Läuft auf Port 8085 (Dashboard + API) und Port 80 (Webhook über Nginx).
Standort¶
- Pfad:
/home/mltrading/api-key-manager/ - Systemd:
apikeymanager.service,cerberus-bot.service,channel-trader.service - User: root (apikeymanager + cerberus-bot), mltrading (channel-trader)
- Ports: 8085 (Dashboard), 80/443 (Webhook via Nginx)
Komponenten¶
1. FastAPI App (app.py)¶
- Port: 8085
- Exec:
uvicorn app:app --host 0.0.0.0 --port 8085 - Webhook:
POST /webhook/tradingview— empfängt TradingView-Signale, führt Flip-Logik aus - Dashboard: HTML-Dashboard mit Control Panels
2. Telegram Bot (telegram_bot.py)¶
- After: apikeymanager.service
- Bot Token:
/home/mltrading/api-key-manager/.cerberus_bot_token - Channel: @MNE_Signal_Trading_Club (-1001737729850)
3. Channel Trader (channel_trader.py)¶
- User: mltrading (einziger Service der nicht als root läuft!)
- Config:
channel_trading_config.json— Liste der Signal-Quellen - Session:
/home/mltrading/Telethon-Channel-Clone/cerberus_bot.session - Signal-Sources: @EtoYaTrendmaster, @EtoYaTradingCommunity, plus 3 Telegram-IDs
- Notify-Logik: flip + full-close-via-partial — async über
loop.create_task()
Datenbank¶
- Pfad:
/home/mltrading/api-key-manager/trading.db(SQLite) - Tabellen: positions, trades, config, spike_events, volume_breakouts
Wichtige Dateien¶
| Datei | Zweck |
|---|---|
app.py |
FastAPI-Server + Dashboard |
exchange_client.py |
Exchange-API (ccxt, LBank) |
trade_engine.py |
Trade-Ausführungslogik |
telegram_bot.py |
Telegram Bot Interface |
dashboard.html |
Web-Dashboard UI |
channel_trader.py |
Telegram Channel Listener |
channel_trading_config.json |
Channel-Quellen-Konfig |
.cerberus_bot_token |
Bot-Token (geheim) |
Bekannte Issues & Fixes¶
- Notify-Lücke — channel_trader flip + full-close-via-partial hatte keine Benachrichtigung → Fix:
loop.create_task()stattawaitfür Sync-Funktionen - trade_engine liquidation flip — gleiches Notify-Problem → Fix: async notify
- LBank
createOrder— ccxt nutztspotPrivatePostCreateOrderstatt Standard-API - Stale-Markets —
_safe_call()auto-refreshtload_markets()bei Fehlern - Token-Label Regex:
r'Token Label:\\s*(\\w+?)\\s*Start' - "Seen"-Set: Nur nach Trade/Pending/Retry hinzufügen — nicht bei jedem Signal
- qty_step:
math.floor(v / s) * s— korrekte Quantity-Berechnung
Fixes 2026-05-18¶
db_row → db_pos—trade_engine.pyZeile 1291:sync_exchange_positionsNotification hattedb_rowstattdb_pos→ verursachte silent NameError, Notifications wurden nie gesendet- Exchange-Typ erzwingt Futures —
exchange_client.py: Bybit + Binance haben jetztdefaultType:'swap'+category:'linear'aufcreate_market_buy/sell→ zwingt Futures, verhindert versehentliches Spot-Trading - LBank Spot-Fix —
exchange_client.py: LBank jetzt mitdefaultType:'spot'→ behebt 'Invalid Trading Pair' Fehler - Partial-Close Minimum Order —
position_agent.py: Neue_get_min_order_qty()Prüfung → wenn Partial-Close-Betrag unter Exchange-Minimum, wird komplette Position geschlossen - notify_trade_closed() Leverage — Nimmt jetzt
leverageParameter entgegen, zeigt leveraged PnL mit 4 Dezimalstellen
Abhängigkeiten¶
- [[ai-advisor]] → webhook an Port 8085
- [[channel-trader]] → Telegram Sessions
- [[server-infrastructure]] → DB, Ports, Nginx