Het belang van 'Uptime' monitoring: Hoe weet je of je bot nog draait?
Je bot draait. Op een bepaald moment.
Misschien zelfs een week lang. Je bent tevreden, de logfiles groeien en de trades lopen binnen. En dan? Dan draait hij nog steeds, maar is er niets meer aan het doen.
Of erger, de verbinding met je broker is verbroken en je staat met een open positie in een heftige markt zonder dat je bot kan reageren.
Dit is de nachtmerrie van elke trader. Je bot kan niet praten, hij stuurt geen appje als er iets misgaat. Jij moet weten wat er speelt, zonder elke minuut op je scherm te staren. Dat is waar 'Uptime' monitoring om de hoek komt kijken. Het is simpelweg de manier om te weten of je bot nog leeft en gezond is.
Waarom staren naar schermen niet werkt
Veel traders beginnen met een simpele logfile. Ze schrijven elke actie naar een tekstbestand en checken die handmatig.
"Oké, om 14:32 is er een trade gemaakt. Dat betekent dat hij het toen deed." Dat is beter dan niets, maar het zegt niets over de status nú. Misschien is de server na 14:33 gecrasht. Misschien draait het script nog, maar kan het niet verbinden met de API van Interactive Brokers of Binance.
Je wilt geen dode bot ontdekken omdat je geen winst hebt gemaakt terwijl de markt op en neer ging. Je wilt een seintje krijgen op je telefoon zodra het misgaat.
Zodat je met één commando kunt herstarten of de fout kunt analyseren.
Denk aan je broker. Die vraagt geld voor de datastream en de transacties. Je betaalt voor toegang.
Als je bot stilvalt, betaal je voor niets. En erger, je mist kansen.
In de wereld van algoritmisch traden is tijd geld. Elke seconde downtime is potentieel verlies. We gaan een monitoringsysteem opzetten dat lichtgewicht is, betrouwbaar en je waarschuwt via Telegram. Geen dure diensten nodig, gewoon een beetje Python en een vleugje infrastructuur.
Wat heb je nodig? (Je gereedschapskist)
Je hebt niet veel nodig, maar de juiste tools maken het leven makkelijk.
- Een VPS of server: Waar draait je bot? Bijvoorbeeld een DigitalOcean Droplet (€5-12 per maand) of een AWS EC2 instance. Zolang je Linux kunt gebruiken, is het goed. Windows Server werkt ook, maar is vaak duurder en zwaarder.
- Python 3.x: Staat waarschijnlijk al op je server. Zo niet:
sudo apt update && sudo apt install python3 python3-pip. - Een Telegram Bot: Maak er een aan via de 'BotFather' in Telegram. Het is gratis en binnen 2 minuten geregeld. Je krijgt een 'token' en een 'chat_id'.
- Pakketbeheer (Pip): We installeren een paar libraries. Zorg dat je
pip3beschikbaar hebt. - Een simpele teksteditor: Nano of Vim. Wat je prettig vindt werken.
We bouwen iets dat werkt, zonder tierelantijnen. Focus op het fundament. Als je dit op orde hebt, slaap je een stuk rustiger. Heb je dit niet? Regel het even.
Stap 1: De Telegram waarschuwingen regelen
Een VPS is vaak de grootste drempel, maar voor €5 per maand heb je al een prima basis om je bot op te draaien. Geen excuses, dit is je digitale winkelpand.
Je sluit de deuren ook niet zonder alarmsysteem. Voordat we de monitor schrijven, moeten we kunnen waarschuwen.
Stap 2: De heartbeat script schrijven
Open Telegram, zoek naar 'BotFather' en start een chat. Typ /newbot, geef hem een naam (bijv. 'MijnTradingBotAlerts') en een username (eindigend op 'bot'). Klaar.
Je krijgt een token. Kopieer die. Zoek nu je eigen chat_id op.
import requests
import time
import os
TELEGRAM_TOKEN = "JOUW_TOKEN_HIER"
TELEGRAM_CHAT_ID = "JOUW_CHAT_ID_HIER"
def send_telegram_message(message):
url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
payload = {
"chat_id": TELEGRAM_CHAT_ID,
"text": message
}
try:
requests.post(url, json=payload, timeout=5)
except Exception as e:
print(f"Kon bericht niet sturen: {e}")
def heartbeat():
while True:
send_telegram_message("✅ Bot draait nog. Alles oké.")
time.sleep(300) # Wacht 5 minuten (300 seconden)
if __name__ == "__main__":
heartbeat()
Dit kan via een simpele tool of door een berichtje te sturen naar je eigen bot en dan te kijken welke ID Telegram geeft via een API call. Je hebt nu: TELEGRAM_TOKEN en TELEGRAM_CHAT_ID. Tijdsindicatie: 5 minuten.
Veelgemaakte fout: De verkeerde ID gebruiken.
Je eigen ID is anders dan de groeps-ID. Test het even met een simpele Python script voordat je doorgaat.
Stap 3: Proces monitoring met PM2
We maken een script dat constant 'heartbeat' signalen stuurt. Stel je bot draait als een main proces, bijvoorbeeld main.py.
We voegen een simpele functie toe die elke 5 minuten een berichtje naar Telegram stuurt: "Ik leef nog!".
Dit is je basis monitoring. Is het bericht er niet? Dan is de bot gestopt. Gebruik onze gids voor logging in Python om fouten in je live bot direct op te sporen. Open je main.py of maak een nieuw bestand monitor.py.
We gebruiken de requests library. Die heb je vast al voor je API calls.
sudo apt install nodejs npmsudo npm install -g pm2- Start je script:
pm2 start monitor.py --name "TradingBot-Heartbeat" --interpreter python3 - Zorg dat PM2 automatisch opstart bij een reboot:
pm2 startupen voer de gegenereerde commando uit, daarnapm2 save.
Tijdsindicatie: 10-15 minuten om te typen en testen.
Veelgemaakte fout: De timeout vergeten in de request.
Als de Telegram API down is (zeldzaam), blijft je script hangen. Zorg altijd voor timeouts bij externe calls. Stel je bot crasht hard.
Geen error handling die het redt. Het script stopt gewoon.
Dan stopt ook je heartbeat. Je krijgt geen seintje meer. Dat is slecht. We hebben een 'supervisor' nodig: een tool die ervoor zorgt dat je script automatisch herstart als het crasht.
Stap 4: Monitor de API connectie (Deep Health Check)
De makkelijkste tool hiervoor is PM2. Het is een procesmanager voor Node.js, maar hij beheert Python scripts perfect.
Log in op je VPS via SSH. Installeer PM2 (als je Node.js niet hebt, installeer die eerst):
Nu draait je monitor permanent. Zelfs als je VPS herstart, draait hij weer op.
PM2 houdt de status bij en herstart bij crashes. Je kunt de logs checken met pm2 logs TradingBot-Heartbeat. Tijdsindicatie: 10 minuten.
Veelgemaakte fout: Vergeten om pm2 save te doen. Na een server reboot is alles weg en moet je alles opnieuw starten. Doe dit meteen.
import alpaca_trade_api as tradeapi # pip install alpaca-trade-api
# ... (bestaande telegram code) ...
def check_broker_connection():
try:
api = tradeapi.REST('KEY', 'SECRET', base_url='https://paper-api.alpaca.markets')
account = api.get_account()
# Als we hier komen, is de verbinding goed
return True
except Exception as e:
send_telegram_message(f"🚨 CRITICAL: Kan niet verbinden met broker! Fout: {e}")
return False
# In je main loop:
# if not check_broker_connection():
# time.sleep(60) # Wacht even, probeer opnieuw
Een heartbeat zegt alleen: "Python draait". Het zegt niets over de verbinding met je broker.
Stel je bot draait, maar de API sleutel is verlopen of de firewall blokkeert de poort.
Dan draait de bot, maar doet hij niets. We moeten een stapje dieper gaan. Pas je script aan zodat het elke 15 minuten probeert een simpele API call te doen.
Laten we uitgaan van de Alpaca API (populair voor Python traders). We proberen de account status op te halen.
Stap 5: Monitoring van server resources (CPU & RAM)
Als dat faalt, sturen we een urgenter bericht. Doe dit niet te vaak. Elke 15 tot 30 minuten is genoeg.
Je wilt geen rate limit triggeren bij je broker. Deze functie controleert of de poort open is en je credentials werken, terwijl je ook je trading server stabiel houdt door auto-updates uit te schakelen.
Tijdsindicatie: 20 minuten (afhankelijk van welke broker API je gebruikt).
Veelgemaakte fout: De API key in de code plakken. Gebruik altijd environment variables (os.environ.get('API_KEY')) en leer hoe je SSH keys instelt voor veilige toegang tot je trading bot, zeker als je je code op GitHub zet.
Je bot kan langzaam lekken (memory leaks) of je backtesting script eet alle CPU op.
import psutil
def check_resources():
ram_usage = psutil.virtual_memory().percent
cpu_usage = psutil.cpu_percent(interval=1)
if ram_usage > 90:
send_telegram_message(f"⚠️ Waarschuwing: RAM usage is {ram_usage}%! Herstarten aanbevolen.")
if cpu_usage > 95:
send_telegram_message(f"⚠️ Waarschuwing: CPU usage is {cpu_usage}%! Check processen.")
Je VPS provider stuurt soms een waarschuwing, maar dat is vaak te laat. We voegen een simpele check toe met de psutil library. Als het geheugen volloopt (>90%), sturen we een seintje. Je bot kan dan traag worden of crashen.
Installeer: pip3 install psutil. Voeg dit toe aan je heartbeat loop.
Dit geeft je een totaalplaatje. Je weet niet alleen dat hij draait, maar ook of hij gezond is.
Tijdsindicatie: 10 minuten.
Veelgemaakte fout: Te gevoelig instellen. Een piek van 5 seconden naar 100% CPU tijdens een dataverwerking is normaal. Check over een langere periode of gebruik een gemiddelde.
De verificatie-checklist
Voordat je dit systeem in de productie zet (en je geld toevertrouwt aan je bot), loop je deze lijst na. Niets is vervelender dan denken dat je beschermd bent terwijl er een gat in je monitoring zit.
Als je deze checklist kunt afvinken, weet je zeker dat je bot niet ongemerkt stilvalt. Je hebt nu een professionele setup die je waarschuwt, herstart en rapporteert. Je hoeft niet langer elke 10 minuten je scherm te checken.
- Telegram test: Stuur een handmatig bericht via Python naar je bot. Werkt het? Krijg je het binnen?
- PM2 status: Type
pm2 list. Zie je je script staan met status 'online'? Is de uptime stabiel? - Herstart test: Herstart je VPS (of stop PM2 en start opnieuw). Draait je monitor automatisch weer op? (Dankzij PM2 startup).
- Crash test: Stop je script handmatig (Ctrl+C in de terminal of
pm2 stop). Krijg je binnen 5 minuten een berichtje dat de heartbeat mist? - API Fout test: Verander tijdelijk je API key in je script naar een verkeerde. Zorg dat je een "Kan niet verbinden" melding krijgt via Telegram.
- Log checks: Type
pm2 logs. Zie je nette logs? Zitten er geen rare errors in?
Je kunt nu met een gerust hart slapen, wetende dat je telefoon gaat piepen als er echt iets misgaat.
Dat is de vrijheid die algoritmisch traden hoort te bieden.
