Bot-Architektur

Systemüberblick
Die ByNinja Trading-Plattform ist als verteiltes Multiprozess-System aufgebaut, das die Handelsausführung von der Benutzerinteraktion trennt.
Die Architektur besteht aus zwei unabhängigen Anwendungen:
- •Trading Bot — verantwortlich für Marktanalyse, Strategieausführung, Risikomanagement und Orderverarbeitung.
- •Telegram Control Server — verantwortlich für Benachrichtigungen, Fernsteuerung und Befehlsverarbeitung über Telegram.
Beide Dienste kommunizieren über eine leichtgewichtige, benutzerdefinierte TCP-Ebene, die es ihnen ermöglicht, unabhängig zu laufen und dennoch in Echtzeit synchronisiert zu bleiben.
Diese Trennung verbessert Stabilität, Skalierbarkeit und Fehlerisolierung. Selbst wenn der Telegram-Dienst nicht verfügbar ist, kann die Handelsengine ohne Unterbrechung weiterarbeiten.
Prozessarchitektur
Das System verwendet ein prozessorientiertes Design, bei dem jede Komponente eine eigene Verantwortung hat.
Handelsprozess
Der Handelsprozess verwaltet:
- •Integration der Exchange-API
- •Marktüberwachung
- •Strategieausführung
- •Risikomanagement
- •Positionsverwaltung
- •Internes Logging
Die Handelsengine läuft kontinuierlich und stellt Fernsteuerungsbefehle über die TCP-Clientverbindung bereit.
Telegram-Prozess
Der Telegram-Prozess behandelt:
- •Telegram Bot API-Kommunikation
- •Benutzerbefehlsverarbeitung
- •Benachrichtigungen und Alarme
- •TCP-Serververwaltung
Dieser Prozess fungiert als Brücke zwischen dem Benutzer und der Handelsengine.
Unabhängige Laufzeit
Beide Anwendungen werden separat gestartet und arbeiten als unabhängige Prozesse:
python3 -c "from trading.main import main; main()"python3 -c "from telegram.main import main; main()"Da beide Dienste isoliert sind, kann jeder Prozess neu gestartet, aktualisiert oder debuggt werden, ohne das andere Subsystem zu beeinträchtigen.
TCP-Kommunikation
Die Kommunikationsebene basiert auf einem benutzerdefinierten TCP-Protokoll, das für geringen Overhead und Echtzeitinteraktion ausgelegt ist.
Kommunikationsablauf
Telegram User
↓
Telegram Bot
↓
TCP Server
↓
Trading Bot TCP Client
↓
Trading EngineDer umgekehrte Fluss wird für Logs, Alarme und Statusaktualisierungen verwendet.
Nachrichtenstruktur
Alle Nachrichten werden im JSON-Format mit einem Header fester Länge übertragen:
{
"tag": "command",
"message": "starttrading",
"timestamp": 1750000000
}Unterstützte Funktionen
Die TCP-Ebene umfasst:
- •Automatische Wiederverbindungslogik
- •Hintergrund-Sende-/Empfangsworker
- •Threadsichere Nachrichtenwarteschlangen
- •Graceful Shutdown-Handling
- •Nachrichtenrouting nach Typ
- •Überwachung persistenter Verbindungen
Befehlssystem
Die Architektur unterstützt Fernbefehle wie:
- •Handel starten / stoppen
- •Kaufen aktivieren / deaktivieren
- •Verkaufen aktivieren / deaktivieren
- •Kauf-/Verkaufsaktionen erzwingen
- •Statistiken abrufen
- •Systemstatusüberwachung
Befehle können global oder symbol-spezifisch sein.
Multiprozessdesign
Die Plattform folgt einer Multiprozessarchitektur anstelle eines monolithischen Designs.
Vorteile
Isolation
Ein Fehler im Telegram-Subsystem stoppt den Handelsbetrieb nicht.
Skalierbarkeit
Jeder Dienst kann in Zukunft auf verschiedenen Maschinen oder Containern bereitgestellt werden.
Wartbarkeit
Die Codebasis ist in logische Komponenten mit klaren Verantwortlichkeiten unterteilt.
Zuverlässigkeit
TCP-Wiederherstellung und Hintergrundarbeiter helfen, eine stabile Kommunikation selbst bei vorübergehenden Netzwerkausfällen aufrechtzuerhalten.
Gleichzeitige Ausführung
Handelsoperationen, Telegram-Polling, TCP-Kommunikation und Logging laufen alle gleichzeitig mit dedizierten Threads.
Internes Parallelitätsmodell
Innerhalb jedes Prozesses verwendet das System Multithreading für asynchrone Operationen.
Threads der Handelsanwendung
- •Handelsausführungsthread
- •TCP-Kommunikationsthread
- •Log-Weiterleitungsthread
- •Hintergrund-Überwachungsworker
Threads der Telegram-Anwendung
- •Telegram-Polling-Thread
- •TCP-Server-Thread
- •Nachrichtenweiterleitungsworker
Dieses Design stellt sicher, dass Netzwerkoperationen die Handelsengine niemals blockieren.