Skip to content

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

  1. Notify-Lücke — channel_trader flip + full-close-via-partial hatte keine Benachrichtigung → Fix: loop.create_task() statt await für Sync-Funktionen
  2. trade_engine liquidation flip — gleiches Notify-Problem → Fix: async notify
  3. LBank createOrder — ccxt nutzt spotPrivatePostCreateOrder statt Standard-API
  4. Stale-Markets_safe_call() auto-refresht load_markets() bei Fehlern
  5. Token-Label Regex: r'Token Label:\\s*(\\w+?)\\s*Start'
  6. "Seen"-Set: Nur nach Trade/Pending/Retry hinzufügen — nicht bei jedem Signal
  7. qty_step: math.floor(v / s) * s — korrekte Quantity-Berechnung

Fixes 2026-05-18

  1. db_row → db_postrade_engine.py Zeile 1291: sync_exchange_positions Notification hatte db_row statt db_pos → verursachte silent NameError, Notifications wurden nie gesendet
  2. Exchange-Typ erzwingt Futuresexchange_client.py: Bybit + Binance haben jetzt defaultType:'swap' + category:'linear' auf create_market_buy/sell → zwingt Futures, verhindert versehentliches Spot-Trading
  3. LBank Spot-Fixexchange_client.py: LBank jetzt mit defaultType:'spot' → behebt 'Invalid Trading Pair' Fehler
  4. Partial-Close Minimum Orderposition_agent.py: Neue _get_min_order_qty() Prüfung → wenn Partial-Close-Betrag unter Exchange-Minimum, wird komplette Position geschlossen
  5. notify_trade_closed() Leverage — Nimmt jetzt leverage Parameter entgegen, zeigt leveraged PnL mit 4 Dezimalstellen

Abhängigkeiten

  • [[ai-advisor]] → webhook an Port 8085
  • [[channel-trader]] → Telegram Sessions
  • [[server-infrastructure]] → DB, Ports, Nginx