Hoe debug je een bot die wel draait, maar geen orders plaatst?

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Foutmeldingen & Debugging Live Bots · 2026-02-15 · 7 min leestijd

Je bot draait, je terminal toont hartslag-achtige logregels, maar je broker-account blijft leeg.

Geen orders, geen fills, geen positie. Dat voelt als een auto die start maar niet rijdt. Even rustig ademhalen, want meestal zit het probleem in een klein, hardnekkig detail. We gaan het samen fixen, stap voor stap, zonder ingewikkelde theorie.

Jij hebt Python, een broker-API en een bot nodig. De rest regelen we nu.

Wat je nodig hebt voordat je begint

Haal even drie dingen bij de hand. Een werkende Python-omgeving (3.9+), een broker met een API-sleutel (denk Interactive Brokers via ib_insync, Alpaca, of Binance), en je bot-code die je live draait.

Zorg dat je een aparte API-sleutel hebt voor testen en productie. Bij Alpaca kost een pro-account ongeveer €15 per maand, en bij Binance betaal je per trade een paar tienden procent. Pak een schone map voor deze debug-sessie en een notitieblok voor je logs.

Check ook of je broker-account geld heeft en of je rechten hebt om orders te plaatsen.

Bij IBKR is dat soms een extra toestemming voor API-trading. Bij Binance moet je futures of margin activeren. Houd een testaccount bij de hand, want dat is veiliger. En zorg dat je een simpele bot hebt die één order kan plaatsen: een market buy van 0,001 BTC of 1 aandeel bij Alpaca. Simpel is sneller debuggen.

Stap 1: Controleer je API-toegang en connectie

De bot kan draaien en toch geen orders sturen als de API-connectie niet echt lukt. Test eerst of je bot echt is ingelogd.

  1. Schrijf een mini-scriptje dat je API-sleutel laden en een simpele status call doet (bijv. account balance). Verwacht 200 als response. Doe dit in 5 minuten.
  2. Print de response. Bij IBKR print je ib.isConnected() en ib.serverVersion(). Bij Alpaca print je account.status. Bij Binance print je een succesvolle ping naar /api/v3/time.
  3. Test met je testsleutel op een testnet. Bij Binance testnet is het endpoint anders. Bij Alpaca gebruik je paper trading instellingen.
  4. Check de tijd-sync. Binance eist dat je systeemtijd binnen 1000 ms klokt. Gebruik NTP en sync.

Maak een klein script dat alleen de accountstatus ophaalt. Bij Alpaca doe je een GET naar het account-endpoint.

Bij IBKR met ib_insync controleer je of ib.isConnected() True teruggeeft. Bij Binance check je of de tijd-sync lukt via GET /api/v3/time. Veelgemaakte fouten: verkeerd endpoint (live vs paper), verkeerde headers (X-APCA-API-KEY-ID bij Alpaca), en verkeerde tijdzone. Tijdsindicatie: 10 minuten. Als dit faalt, stop je hier en fix je de API-toegang eerst.

“Mijn bot draait maar doet niets” is vaak “mijn bot is niet echt verbonden”. Check dit eerst.

Stap 2: Check de orderaanroep en foutmeldingen

Veel bots draaien wel, maar sturen nooit een order door omdat de aanroep verkeerd is of stil foutgaat.

  1. Zet een try-except om je order call en print de fout: print(e) en print(type(e)).
  2. Check de parameters: symbol (AAPL vs Aapl), quantity (hele getallen voor aandelen, decimals voor crypto), side (buy/sell), type (market/limit), time_in_force (GTC/IOC).
  3. Bij limits: zorg dat de limitprijs binnen het spread-bereik ligt. Te ver van de markt = geen fill en geen orderplaatser soms.
  4. Bij Binance: gebruik een heel aantal decimals voor quantity en prijs volgens de exchange rules. Check de LOT_SIZE en PRICE_FILTER via exchange info.

Kijk naar je orderfunctie en vang alle fouten op. Gebruik try-except rond je order call en print de fout. Bij ib_insync is dat ib.placeOrder, bij Alpaca is het alpaca.submit_order, en bij Binance is het client.create_order. Veelgemaakte fouten: verkeerde symbolen (BTCUSDT vs BTC-EUR), verkeerde quantity-decimals, en limit orders die te ver van de markt staan. Tijdsindicatie: 15 minuten.

Als je een fout ziet, fix die meteen en test je trading bot grondig voordat je live gaat met een market order van 0,001 BTC of 1 aandeel. Pro-tip: schakel verbose logging in.

Bij Alpaca en Binance kan je de debug-modus aanzetten. Bij ib_insync log je ib.waitOnUpdate() en ib.sleep(0.1) om updates te zien.

Stap 3: Controleer de broker- en account-instellingen

Sommige brokers blokkeren orders op accountniveau. Interactive Brokers heeft permissions voor trading, en Binance kan futures blokkeren tot je KYC klaar is.

  1. Open je broker-dashboard en check of trading is ingeschakeld. Bij IBKR: Account Settings → API → Trading Permissions.
  2. Controleer of je voldoende saldo hebt. Bij Alpaca: cash & buying power. Bij Binance: spot vs futures wallet. Een futures-order faalt als je margin onvoldoende is.
  3. Check market access: sommige markten zijn alleen beschikbaar voor geverifieerde accounts. Bij Binance Futures moet je futures activeren.
  4. Test met een paper account. Bij Alpaca Paper Trading zijn aparte API-sleutels nodig.

Als je bot draait maar geen orders plaatst, kan dit de boosdoener zijn.

Veelgemaakte fouten: productiesleutel op paper endpoint, verkeerd accounttype, en margin-limieten overschrijden. Tijdsindicatie: 10 minuten. Zorg dat je een testorder kunt plaatsen van €10 tot €50.

Stap 4: Log en monitor de bot live

Je bot moet laten zien wat hij doet. Voordat je live gaat, is het slim om via integration testing te verifiëren of je bot echt praat met de broker sandbox. Voeg daarnaast logregels toe vóór, tijdens en na de order.

  1. Log de market data die je bot ziet. Bijvoorbeeld de laatste prijs en spread. Een bot die geen order plaatst, ziet soms geen entry-signal.
  2. Log je risicobeheer checks. Als je max exposure of daily loss limieten hebt, log of die blokkeren.
  3. Log de order ID en status. Als er geen ID komt, is de order niet aangekomen.
  4. Gebruik een monitoring tool. Bijvoorbeeld een simpel dashboard met Streamlit of een Telegram-bot die alerts stuurt.

Log de timestamp, symbool, quantity, prijs, en de response. Gebruik een logbestand, niet alleen de terminal.

Voorkom veelgemaakte fouten in trading scripts: te weinig logging, geen logrotate (logbestanden groeien tot GB’s), en geen time-based filters. Tijdsindicatie: 20 minuten. Zorg dat je per trade 5-10 logregels hebt.

Een bot zonder logs is een zwarte doos. Open die doos stap voor stap.

Stap 5: Test met een minimal bot en backtest

Maak een bot die alleen een market order plaatst op een simpel signaal.

  1. Bouw een minimal bot: krijg een prijs, zet een flag op True, plaats een market buy van 0,001 BTC of 1 aandeel.
  2. Draai een backtest met historical data. Gebruik Pandas en je broker data. Check of je entry-voorwaarden kloppen.
  3. Test met een paper account. Zet de bot live voor 1 uur en noteer elke orderpoging.
  4. Voeg risicomanagement toe: max 1% per trade, daily loss limiet, en een maximum aantal trades per uur.

Gebruik een backtest om te zien of je strategie theoretisch werkt. Als de backtest geen trades laat zien, is je signaal het probleem.

Veelgemaakte fouten: te complexe strategie tijdens debug, verkeerde data granulariteit (1m vs 5m), en geen order-slagingspercentage meten. Tijdsindicatie: 30-45 minuten. Als je backtest orders toont maar live niet, zit het verschil in API of account instellingen.

Stap 6: Veelvoorkomende valkuilen en oplossingen

Er zijn een paar klassiekers die bots tegenhouden. Controleer deze snel, want ze kosten je soms uren debug-tijd.

  • Symbol-format: AAPL vs Aapl, BTCUSDT vs BTC-EUR. Elk platform heeft zijn eigen formaat.
  • Quantity-decimals: aandelen meestal heel, crypto vaak 2-8 decimals. Gebruik de juiste LOT_SIZE.
  • Limit orders te ver van de markt: zet ze binnen de spread of gebruik market orders voor testen.
  • Rate limits: Binance en Alpaca hebben limieten. Log HTTP 429 en pas je polling interval aan.
  • Foutafhandeling: vang alle exceptions en log ze. Geen silent fails.
  • Environment variables: zet API-sleutels en URLs in env, niet hardcoded. Test met paper keys.

Tijdsindicatie: 15 minuten. Fix de top 3 fouten en probeer opnieuw.

Verificatie-checklist

Gebruik deze lijst om je debug-sessie af te sluiten. Elk item moet groen zijn voordat je bot live gaat.

  1. API-connectie actief en getest met een status call.
  2. Order call werkt en vangt fouten op met try-except.
  3. Account heeft rechten en saldo voor de gewenste markt.
  4. Symbol, quantity, en prijs kloppen volgens broker regels.
  5. Logging is actief en toont order ID en status.
  6. Backtest laat orders zien; live test op paper toont orders.
  7. Risicomanagement limieten zijn ingesteld en gelogd.
  8. Rate limits worden gerespecteerd en getest.

Als je alle items groen hebt, is je bot klaar voor een kleine live run. Begin met een lage exposure, bijvoorbeeld €25 per trade, en monitor de eerste 24 uur. En onthoud: debuggen is gewoon een checklist met geduld. Je kunt dit.

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Over Alex de Vries

Alex is een ervaren quantitatief analist en Python-ontwikkelaar die complexe trading concepten vertaalt naar begrijpelijke, praktische handleidingen voor zowel beginners als gevorderden.

Volgende stap
Bekijk alle artikelen over Foutmeldingen & Debugging Live Bots
Ga naar overzicht →