Infrastructuur

De ByNinja Trading Bot-infrastructuur is ontworpen voor langdurige autonome werking in instabiele, real-world omgevingen. Cryptohandelsystemen moeten 24/7 operationeel blijven, automatisch herstellen van onverwachte storingen en downtime minimaliseren zonder handmatige tussenkomst.

Om dit te bereiken, omvat de infrastructuur:

  • Watchdog-uitvoeringslussen
  • Automatisch crashherstel
  • Orchestratie van procesherstart
  • Correcte afhandeling van afsluitingen
  • Persistente runtime-omgeving
  • Geïsoleerde module-uitvoering

De gehele architectuur is gebouwd rond fouttolerantie en operationele continuïteit.


Watchdog-scripts

De belangrijkste uitvoeringslaag van het systeem wordt aangestuurd door een speciaal watchdog-opstartscript:

Code
./run.sh trading
./run.sh telegram

Het watchdog-script fungeert als een lichtgewicht proces-supervisor die verantwoordelijk is voor:

  • Omgevingsvalidatie
  • Activering van de virtuele omgeving
  • Module-opstarten
  • Crashdetectie
  • Automatische herstartafhandeling

Deze aanpak vermijdt de noodzaak voor externe procesmanagers tijdens ontwikkeling of lichte implementaties, terwijl toch productie-stijl veerkracht wordt geboden.


Omgevingsvalidatie

Voordat een module wordt gestart, valideert het script:

  • Invoerargumenten
  • Bestaan van de virtuele omgeving
  • Runtimeconfiguratie

Voorbeeld:

Code
if [[ "$MODULE" != "trading" && "$MODULE" != "telegram" ]]; then
    echo "Invalid argument"
    exit 1
fi

Het script zorgt er ook voor dat de Python virtuele omgeving bestaat:

Code
if [ ! -f "$VENV_PATH" ]; then
    echo "Virtual environment not found"
    exit 1
fi

Dit voorkomt accidentele opstart met kapotte afhankelijkheden of onjuiste uitvoeringsparameters.


Geïsoleerde Runtime-omgeving

De infrastructuur activeert een speciale Python virtuele omgeving vóór uitvoering:

Code
source "./env/bin/activate"

Dit garandeert:

  • Afhankelijkheidsisolatie
  • Stabiele pakketversies
  • Reproduceerbaar runtime-gedrag
  • Schone implementatiescheiding

De launcher definieert ook expliciet PYTHONPATH:

Code
PYTHONPATH="$(pwd)/src" python3 -c "$CMD"

Dit zorgt voor betrouwbare imports, ongeacht de huidige shell-context of implementatielocatie.


Automatisch Herstartsysteem

Een van de belangrijkste infrastructuurkenmerken is de automatische herstartlus.

De launcher bewaakt continu het botproces:

Code
while true; do
    PYTHONPATH="$(pwd)/src" python3 -c "$CMD"
done

Als het proces onverwacht wordt afgesloten, detecteert de watchdog onmiddellijk de fout en start de module automatisch opnieuw op.

Crashdetectielogica:

Code
EXIT_CODE=$?

if [ $EXIT_CODE -ne 0 ]; then
    echo "[CRASH] Restarting..."
    sleep $RESTART_DELAY
fi

Dit creëert een zelfherstellend uitvoeringsmodel dat kan herstellen van:

  • Onverwachte uitzonderingen
  • Netwerkstoringen
  • API-storingen
  • Deadlocks
  • Tijdelijke systeeminstabiliteit
  • Externe procesbeëindiging

Gecontroleerde Herstartvertraging

De infrastructuur voegt opzettelijk een afkoelingsperiode toe voor herstart:

Code
RESTART_DELAY=3

Dit voorkomt:

  • Oneindige snelle herstartlussen
  • CPU-pieken tijdens herhaalde crashes
  • Hameren op de API
  • Log-overstroming

De korte vertraging geeft externe systemen de tijd om te herstellen voordat de uitvoering opnieuw wordt geprobeerd.


Gescheiden Service Architectuur

Het systeem scheidt de infrastructuur in twee onafhankelijk herstartbare services:

ServiceVerantwoordelijkheid
HandelsmoduleHandelsengine en strategie-uitvoering
TelegrammoduleExterne bediening en meldingen

Deze isolatie biedt verschillende voordelen:

  • Eén subsysteem kan onafhankelijk falen
  • Telegram-monitoring kan online blijven tijdens handelscrashes
  • Handel kan doorgaan, zelfs als Telegram uitvalt
  • Gemakkelijker debuggen en onderhoud

Modules communiceren via de interne TCP-laag in plaats van directe koppeling.


Correcte Afhandeling van Afsluiten

De infrastructuur ondersteunt gecontroleerd afsluitgedrag met behulp van signaalafhandeling.

Voorbeeld:

Code
signal.signal(signal.SIGINT, signal_handler)

Bij afsluiten:

  • Handel stopt veilig
  • Persistentie wordt naar schijf weggeschreven
  • TCP-verbindingen worden netjes gesloten
  • Threads worden correct beëindigd

Voorbeeld van afsluitprocedure:

Code
🛑 Shutdown signal received...
💾 Forcing save to disk...
✅ PersistentMap stopped

Dit is kritisch in handelssystemen omdat onjuiste afsluitingen anders kunnen leiden tot:

  • Verlies van positie-status
  • Corrupte persistentie
  • Inconsistente herstelgegevens
  • Niet-gesloten orders

Crashherstelfilosofie

De infrastructuur volgt een eenvoudig maar krachtig principe:

Code
Crash → Detect → Restart → Recover State → Continue Trading

De bot is ontworpen onder de aanname dat crashes onvermijdelijk zijn in langlopende gedistribueerde systemen.

In plaats van te proberen elke mogelijke fout te voorkomen, richt de architectuur zich op:

  • Snelle detectie
  • Betrouwbare herstart
  • Herstel van persistente status
  • Operationele continuïteit

Dit verhoogt de betrouwbaarheid op de lange termijn aanzienlijk.


Integratie met Persistentielaag

De infrastructuur werkt nauw samen met het persistentiesubsysteem.

Voor het afsluiten of herstarten:

  • Runtime-status wordt opgeslagen
  • Posities worden gepersisteerd
  • Configuratie blijft intact
  • Herstelmetadata wordt opgeslagen

Na herstart:

  • Status wordt automatisch herladen
  • Handel wordt veilig hervat
  • Bestaande posities worden hersteld
  • Telegram-connectiviteit keert automatisch terug

Dit creëert een veerkrachtige herstelpijplijn, zelfs na onverwachte crashes of serverherstarts.


Telegram Infrastructuurmonitoring

Het Telegram-subsysteem fungeert ook als een lichtgewicht operationele monitoringlaag.

Infrastructuurgebeurtenissen worden direct doorgestuurd naar Telegram:

Code
[CRASH] Module trading exited with code 1
Restarting in 3 seconds...

Dit geeft operators onmiddellijk inzicht in:

  • Crashes
  • Herstarts
  • Afsluitingen
  • Herstelgebeurtenissen
  • TCP-connectiviteitsproblemen

Het resultaat is een extern waarneembare infrastructuur zonder dat er complexe monitoringdashboards nodig zijn.


Productiegericht Betrouwbaarheidsontwerp

De ByNinja-infrastructuur combineert verschillende productie-grade operationele concepten:

  • Watchdog-uitvoeringslussen
  • Automatisch crashherstel
  • Correcte afhandeling van afsluiten
  • Persistente runtime-status
  • Service-isolatie
  • Zelfherstellend herstartgedrag
  • Externe monitoring via Telegram
  • Onafhankelijk subsysteemherstel

Samen vormen deze componenten een infrastructuur die in staat is om continue autonome handelsactiviteiten te ondersteunen met minimaal handmatig toezicht.