Botarchitectuur

TCP Architecture

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:

Code
python3 -c "from trading.main import main; main()"
Code
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

Code
Telegram User
      ↓
Telegram Bot
      ↓
TCP Server
      ↓
Trading Bot TCP Client
      ↓
Trading Engine

De omgekeerde stroom wordt gebruikt voor logs, waarschuwingen en statusupdates.

Berichtenstructuur

Alle berichten worden overgedragen in JSON-formaat met een header van vaste lengte:

Code
{
    "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.