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:
./run.sh trading
./run.sh telegramHet 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:
if [[ "$MODULE" != "trading" && "$MODULE" != "telegram" ]]; then
echo "Invalid argument"
exit 1
fiHet script zorgt er ook voor dat de Python virtuele omgeving bestaat:
if [ ! -f "$VENV_PATH" ]; then
echo "Virtual environment not found"
exit 1
fiDit voorkomt accidentele opstart met kapotte afhankelijkheden of onjuiste uitvoeringsparameters.
Geïsoleerde Runtime-omgeving
De infrastructuur activeert een speciale Python virtuele omgeving vóór uitvoering:
source "./env/bin/activate"Dit garandeert:
- •Afhankelijkheidsisolatie
- •Stabiele pakketversies
- •Reproduceerbaar runtime-gedrag
- •Schone implementatiescheiding
De launcher definieert ook expliciet PYTHONPATH:
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:
while true; do
PYTHONPATH="$(pwd)/src" python3 -c "$CMD"
doneAls het proces onverwacht wordt afgesloten, detecteert de watchdog onmiddellijk de fout en start de module automatisch opnieuw op.
Crashdetectielogica:
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ]; then
echo "[CRASH] Restarting..."
sleep $RESTART_DELAY
fiDit 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:
RESTART_DELAY=3Dit 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:
| Service | Verantwoordelijkheid |
|---|---|
| Handelsmodule | Handelsengine en strategie-uitvoering |
| Telegrammodule | Externe 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:
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:
🛑 Shutdown signal received...
💾 Forcing save to disk...
✅ PersistentMap stoppedDit 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:
Crash → Detect → Restart → Recover State → Continue TradingDe 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:
[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.