Botarchitectuur

Systeemoverzicht
Het ByNinja Trading-platform is gebouwd als een gedistribueerd multi-proces systeem dat handelsuitvoering scheidt van gebruikersinteractie.
De architectuur bestaat uit twee onafhankelijke applicaties:
- •Handelsbot — verantwoordelijk voor marktanalyse, strategie-uitvoering, risicobeheer en orderverwerking.
- •Telegram Controle Server — verantwoordelijk voor notificaties, externe bediening en verwerking van commando's via Telegram.
Beide services communiceren via een lichtgewicht aangepaste TCP-laag, waardoor ze onafhankelijk kunnen draaien terwijl ze realtime gesynchroniseerd blijven.
Deze scheiding verbetert de stabiliteit, schaalbaarheid en foutisolatie. Zelfs als de Telegram-service niet beschikbaar is, kan de handelsengine ongestoord blijven werken.
Procesarchitectuur
Het systeem maakt gebruik van een procesgeoriënteerd ontwerp waarbij elke component een specifieke verantwoordelijkheid heeft.
Handelsproces
Het handelsproces beheert:
- •Integratie van de exchange-API
- •Marktmonitoring
- •Strategie-uitvoering
- •Risicobeheer
- •Positieafhandeling
- •Interne logging
De handelsengine draait continu en stelt commando's voor externe bediening beschikbaar via de TCP-clientverbinding.
Telegram-proces
Het Telegram-proces handelt af:
- •Telegram Bot API-communicatie
- •Verwerking van gebruikerscommando's
- •Notificaties en waarschuwingen
- •TCP-serverbeheer
Dit proces fungeert als een brug tussen de gebruiker en de handelsengine.
Onafhankelijke Runtime
Beide applicaties worden apart gestart en werken als onafhankelijke processen:
python3 -c "from trading.main import main; main()"python3 -c "from telegram.main import main; main()"Omdat beide services geïsoleerd zijn, kan elk proces onafhankelijk worden herstart, bijgewerkt of gedebugd zonder het andere subsysteem te beïnvloeden.
TCP-communicatie
De communicatielaag is gebaseerd op een aangepast TCP-protocol, ontworpen voor lage overhead en realtime interactie.
Communicatiestroom
Telegram User
↓
Telegram Bot
↓
TCP Server
↓
Trading Bot TCP Client
↓
Trading EngineDe omgekeerde stroom wordt gebruikt voor logs, waarschuwingen en statusupdates.
Berichtenstructuur
Alle berichten worden overgedragen in JSON-formaat met een header van vaste lengte:
{
"tag": "command",
"message": "starttrading",
"timestamp": 1750000000
}Ondersteunde Functies
De TCP-laag bevat:
- •Automatische herverbindingslogica
- •Achtergrond verzend-/ontvangstworkers
- •Thread-veilige berichtwachtrijen
- •Correcte afhandeling van het afsluiten
- •Berichtroutering per type
- •Monitoring van permanente verbindingen
Commandsysteem
De architectuur ondersteunt externe commando's zoals:
- •Starten/stoppen van handel
- •In- of uitschakelen van kopen
- •In- of uitschakelen van verkopen
- •Forceer koop-/verkoopacties
- •Statistieken opvragen
- •Monitoring van de systeemstatus
Commando's kunnen globaal of symbool-specifiek zijn.
Multi-procesontwerp
Het platform volgt een multi-procesarchitectuur in plaats van een monolithisch ontwerp.
Voordelen
Isolatie
Een storing in het Telegram-subsysteem stopt de handelsactiviteiten niet.
Schaalbaarheid
Elke service kan in de toekomst op verschillende machines of containers worden geïmplementeerd.
Onderhoudbaarheid
De codebasis is opgedeeld in logische componenten met duidelijke verantwoordelijkheden.
Betrouwbaarheid
TCP-herverbinding en achtergrondworkers helpen stabiele communicatie te behouden, zelfs bij tijdelijke netwerkstoringen.
Gelijktijdige Uitvoering
Handelsactiviteiten, Telegram-polling, TCP-communicatie en logging worden allemaal gelijktijdig uitgevoerd met behulp van speciale threads.
Intern Concurrency Model
Binnen elk proces gebruikt het systeem multithreading voor asynchrone bewerkingen.
Threads van de Handelsapplicatie
- •Thread voor handelsuitvoering
- •Thread voor TCP-communicatie
- •Thread voor het doorsturen van logs
- •Achtergrondmonitoring workers
Threads van de Telegram-applicatie
- •Thread voor Telegram-polling
- •Thread voor TCP-server
- •Workers voor berichtdoorsturing
Dit ontwerp zorgt ervoor dat netwerkbewerkingen de handelsengine nooit blokkeren.