Omgaan met API-foutmeldingen en netwerkonderbrekingen
Je zit er lekker in, je bot draait, de markt beweegt en dan... boem. Een API-foutmelding. Of erger: geen verbinding. Je schrikt, je hartslag gaat omhoog. Want wat betekent dit voor je positie? Is je order wel uitgevoerd? In de wereld van algoritmische trading bots en Python backtesting is dit een scenario dat je vroeg of laat tegenkomt. Het is niet iets om bang voor te zijn, maar wel iets om voorbereid op te zijn. Laten we het hebben over hoe je hiermee omgaat, zonder in paniek te raken.Fout 1: De Time-out omdat je broker te traag is
Stel je voor: je Python-script stuurt een order naar Interactive Brokers via hun API. Normaal is die respons er in milliseconden, maar nu duurt het 5 seconden. Je script wacht, wacht, en stopt dan met een time-out error. Waarom? Omdat de broker een limiet heeft ingesteld voor hoe lang een verzoek mag duren. Misschien is het netwerk druk of heeft de server even een slechte dag. Het gevolg is vervelend. Je order is niet geplaatst, maar je script denkt misschien van wel. Of erger, je bot probeert opnieuw en plaatst per ongeluk twee orders. Dat is het laatste wat je wilt tijdens een volatiele markt. De oplossing zit in je code. Gebruik een ‘retry’ mechanisme. Bijvoorbeeld met de library `tenacity` in Python. Je kunt instellen dat je script het maximaal 3 keer probeert, met een korte pauze tussen elke poging. Doe dit wel voorzichtig; je wilt geen dubbele orders. Voeg een unieke ID toe aan elke poging zodat je broker weet dat het om dezelfde order gaat. Een andere praktische tip is om je time-out limiet aan te passen. Standaard staat die vaak op 5 seconden, maar voor complexe verzoeken naar een broker als Degiro of Plus500 kun je dit soms oprekken naar 10 of 15 seconden. Check de documentatie van je broker hierover.Fout 2: De onverwachte JSON-fout
Je bent lekker aan het debuggen en plots krijg je een JSONDecodeError. Dit gebeurt vaak als je een API-response probeert te lezen, maar de data niet klopt. Misschien stuurt de broker een leeg antwoord of een HTML-pagina met een foutmelding in plaats van het verwachte JSON-formaat. Dit kan gebeuren als de API tijdelijk onderhoud heeft. Waarom gaat dit mis? Omdat je script er blindelings van uitgaat dat elke response geldige JSON is. Als de broker een 500 Internal Server Error geeft, is dat geen JSON. Het gevolg is dat je bot crasht op het verkeerde moment, terwijl de markt beweegt. Gelukkig is dit makkelijk op te lossen. Omring je API-call met een `try-except` blok in Python. Vang de JSON-fout op en log de ruwe response. Zo zie je wat er echt binnenkomt. Is het een HTML-pagina? Dan weet je dat de broker problemen heeft. Gebruik een library zoals `requests` en check altijd het HTTP-statuscode voordat je de response probeert te parsen. Als de statuscode niet 200 is, weet je dat er iets mis is. Je kunt dan je script tijdelijk pauzeren of een fallback-actie uitvoeren, zoals het uitlezen van een lokale cache.Fout 3: De API-sleutel is verlopen of ongeldig
Je start je bot op en meteen krijg je een 401 Unauthorized fout. Je denkt: huh, maar ik heb toch net mijn API-sleutel ingesteld? Dit gebeurt vaak bij brokers zoals Binance of Kraken waar API-sleutels een vervaldatum hebben. Of je hebt per ongeluk de verkeerde rechten (permissions) aangevinkt bij het aanmaken van de sleutel. Het gevolg is direct: je bot kan geen verbinding maken. Geen data, geen orders, niks. Je bent blind en lamgelegd. Dit is super frustrerend, vooral als je net een mooie backtest hebt gedraaid en live wilt gaan. De oplossing is simpel maar vereist discipline. Check altijd de vervaldatum van je API-sleutel. Sommige brokers laten je dit weten via de mail, maar niet altijd. Zet een reminder in je agenda 2 weken voordat de sleutel afloopt. Gebruik een password manager voor je sleutels, zodat je ze makkelijk kunt bijwerken. Zorg er ook voor dat je de juiste rechten geeft. Voor een trading bot heb je meestal alleen ‘trade’ en ‘market data’ rechten nodig, niet ‘withdraw’. Beperk de toegang tot het minimum. Mocht je sleutel dan per ongeluk uitlekken, is de schade beperkt. En test je sleutel altijd eerst in een sandbox-omgeving voordat je live gaat.Fout 4: Netwerkonderbreking door een storing bij je provider
Je bot draait op een VPS in de cloud, maar opeens is er geen verbinding meer. Je kunt niet pingen naar de broker. Dit kan komen door een storing bij je cloudprovider, zoals AWS of DigitalOcean, of simpelweg omdat je thuis internet eruit ligt tijdens het monitoren. Waarom is dit een groot probleem? Omdat je bot niet meer kan reageren op marktveranderingen. Je positie blijft open, maar je stop-loss of take-profit wordt niet aangepast. De markt kan tegen je draaien zonder dat je er iets aan kunt doen. Een praktische oplossing is om je bot te draaien op een betrouwbare VPS met meerdere internetverbindingen. Kies een provider met een uptime-garantie van 99,9%. Daarnaast is het slim om een tweede, simpele bot te draaien die alleen maar posities sluit als de verbinding wegvalt. Gebruik een heartbeat-systeem. Laat je script elke minuut een ping sturen naar een betrouwbare server. Als er 3 opeenvolgende pingen mislukken, sluit dan alle open posities automatisch. Dit voelt drastisch, maar het is veiliger dan wachten tot het beter wordt. Je kunt dit instellen met libraries zoals `ping3` in Python.Fout 5: Rate limits overschrijden door te veel verzoeken
Je bent enthousiast en je bot vraagt elke seconde de nieuwste koersen op van 10 verschillende paren. Opeens krijg je een 429 Too Many Requests fout. Dit betekent dat je de rate limit van de broker hebt overschreden. Veel brokers, zoals de API van DeGiro of Trading212, hebben limieten om hun servers te beschermen. Het gevolg is dat je tijdelijk geblokkeerd wordt. Soms voor een paar minuten, soms langer. Je mist belangrijke data en je bot kan niet handelen. Dit is een klassieke beginnersfout die makkelijk te voorkomen is. De oplossing is simpel: implementeer een rate limiter in je code. Gebruik een library als `ratelimit` of `time.sleep()` om je verzoeken te spreiden. Weet wat de limieten zijn van je broker. Bijvoorbeeld: 120 verzoeken per minuut. Reken uit hoeveel tijd er tussen elke request moet zitten. Een andere tip is om te batchen. Vraag niet voor elk apart aandeel de prijs op, maar vraag een lijst met prijzen tegelijk. Dit vermindert het aantal verzoeken aanzienlijk. Check de documentatie van je API, want sommige brokers bieden ‘bulk’ endpoints aan die hier speciaal voor zijn.Fout 6: Onverwachte wijzigingen in de API-structuur
Je bot draait al maanden soepel, en dan opeens: een error. De broker heeft zijn API bijgewerkt. Een veld heet nu ‘price’ in plaats van ‘current_price’. Dit gebeurt vaker dan je denkt, vooral bij brokers die hun platform moderniseren. Het gevolg is dat je script crasht of verkeerde data leest. Je backtest klopt ineens niet meer, of erger, je bot plaatst orders op basis van verkeerde informatie. Dit kan leiden tot onverwachte verliezen. De oplossing is om je code flexibel te maken. Gebruik dictionaries en de `.get()` methode in Python in plaats van hard-coded sleutels. Zo voorkom je dat je script direct crasht als een veld ontbreekt. Log elke API-response in een database, zodat je later kunt analyseren wat er is veranderd. Volg de changelog van je broker op de voet. Veel brokers hebben een aparte pagina of mailinglijst voor API-updates. Stel een alert in zodat je meteen op de hoogte bent. En test je bot regelmatig met een demo-account om wijzigingen vroeg te ontdekken.Preventieve checklist voor stabiele trading bots
Om jezelf rust te geven, is een checklist essentieel. Zie dit als je veiligheidsnet voordat je live gaat. Elke trader heeft baat bij deze simpele stappen.- Test je API-verbinding altijd eerst met een demo-account.
- Implementeer een retry-mechanisme met back-off voor time-outs.
- Check de vervaldatum van je API-sleutel elke maand.
- Gebruik try-except blokken voor elke API-call.
- Monitor je netwerkverbinding en heb een fallback voor posities.
- Ken de rate limits van je broker en programmeer hier rond.
- Log alle fouten en responses voor later onderzoek.
Met deze aanpak ben je niet meer bang voor een API-fout. Je bent erop voorbereid.
Handelen met algoritmische bots gaat over controle en kalmte. Zolang je weet wat er kan misgaan en je broker verbinding veilig instelt, blijf je de baas over je strategie.
