Wat te doen als je bot een 'KeyboardInterrupt' krijgt?

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 · 5 min leestijd

Je bot draait, je zit rustig achter je scherm en dan gebeurt het: een rits tekst, een foutmelding en alles stopt. KeyboardInterrupt.

Je vingers rusten nog net niet op de stopknop, maar de bot is al offline. Het voelt alsof je net op het punt stond een mooie trade te plaatsen en iemand trekt de stroom eruit.

Even slikken, maar het is niet het einde van de wereld. Deze foutmelding is een standaard Python-bericht. Het betekent dat er een signaal binnenkwam dat de hoofdloop van je bot onderbrak. Meestal komt dat door jouw toetsenbord, soms door een crash in je script of door een onverwachte API-fout. Het is een helder signaal dat er iets niet loopt zoals gepland.

Wat is een KeyboardInterrupt precies?

Een KeyboardInterrupt is een Python-exception die ontstaat wanneer je druk op Ctrl+C in je terminal. Het is een manier om je bot meteen te stoppen, zonder dat je een speciale stopfunctie hoeft te bouwen.

Handig voor noodgevallen, maar het kan ook onbedoeld gebeuren. Veel traders denken dat dit een bug is, maar het is juist een feature.

Python luistert naar het signaal van je besturingssysteem en breekt de lopende code af. Als je bot net een order aan het versturen is via de API van bijvoorbeeld Interactive Brokers of Binance, kan dat een incomplete transactie opleveren. Stel je voor: je bot draait op een VPS van 25 euro per maand.

Je typt per ongeluk iets in de terminal en drukt op Ctrl+C. De bot stopt, maar je openstaande positie blijft bestaan. Dat is niet wat je wilt. Een goede voorbereiding voorkomt chaos.

Waarom dit belangrijk is voor live trading

Als je bot live draait, wil je geen onverwachte stops. Een KeyboardInterrupt betekent dat je bot niet meer reageert op marktbewegingen.

Je mist signalen en je loopt risico op verkeerde prijzen. Je broker ziet alleen maar een order die niet afgerond wordt. Denk aan een bot die draait op een Python-script met de ccxt-bibliotheek voor Binance.

Je hebt net een shortpositie geopend op BTC/USDT met 5x hefboom. Je bot crasht door een toetsenbordfout en de stop-loss wordt niet meer uitgevoerd.

De koers schiet omhoog en je verlies loopt op. Dat wil je voorkomen.

Een bot die goed omgaat met interrupts, houdt je portfolio veilig. Je kunt altijd snel stoppen, maar je positie blijft beheerd. Door fouten in je trading bots op te sporen voordat ze live gaan, behoud je rust en controle. Je bent niet langer een speelbal van ongelukkige toetsaanslagen.

De kern: hoe je bot reageert op interrupts

Je kunt je Python-code zo bouwen dat je bot netjes reageert op een Ctrl+C.

try:
    while True:
        # Haal data op van je broker
        data = exchange.fetch_ohlcv('BTC/USDT', '1m')
        # Doe je analyse en plaats order
        # ...
        time.sleep(1)
except KeyboardInterrupt:
    print("Bot stopt netjes...")
    # Sluit openstaande posities
    exchange.close_all_positions()
    # Log de stop
    log_stop_to_file()
    sys.exit(0)

Gebruik een try-except blok rond je hoofdloop. In het except-gedeelte vang je KeyboardInterrupt af en voer je een cleanup uit. Je ziet hier een eenvoudige loop. De try-blok vangt de interrupt af.

In het except-gedeelte sluit je posities en log je de actie. Zo voorkom je dat je bot abrupt stopt zonder dat je weet wat er gebeurt.

Gebruik een aparte functie voor cleanup. Noem het bijvoorbeeld graceful_shutdown.

Die functie sluit openstaande posities, annuleert openstaande orders en schrijft een logregel naar een bestand. Je weet precies wat er gebeurd is en kunt later analyseren.

Praktische voorbeelden en prijsindicaties

Je bot draait op een VPS. Een basismodel van 2 vCPU en 4 GB RAM kost ongeveer €25 per maand.

Een krachtigere VPS voor meer bots en snellere datakosten rond €50-€75 per maand. Bij providers als DigitalOcean of Hetzner kun je direct een image met Python 3.11 en je favoriete libraries draaien. Je broker kiest voor de API.

Interactive Brokers vraagt geen maandelijkse kosten voor data, maar je betaalt per transactie.

Bij Binance betaal je 0,1% per trade, met korting als je BNB gebruikt. Voor een bot die 100 trades per maand uitvoert, reken je ongeveer €10-€20 aan transactiekosten, afhankelijk van je volume. Een typische backtest met backtrader of vectorbt kost weinig.

Je kunt een dataset van 1 jaar downloaden voor €0-€10 via verschillende dataleveranciers. Een backtest op een gemiddelde laptop duurt 5-15 minuten. Als je bot live draait, wil je een snelle VPS en een stabiele internetverbinding, liefst met een fallback via 4G.

Veelvoorkomende varianten en oplossingen

Soms krijg je een KeyboardInterrupt door een fout in een externe library.

except (KeyboardInterrupt, SystemExit):
    print("Stoppen...")
    graceful_shutdown()
except Exception as e:
    print(f"Onverwachte fout: {e}")
    log_error(e)
    graceful_shutdown()

Bijvoorbeeld een API-fout van de broker. De bot stopt niet netjes, maar je krijgt toch een interrupt. Voorkom dit door veelgemaakte Python fouten in trading scripts op te vangen met de juiste exception handling.

Een andere variant is een bot die meerdere symbolen volgt. Je wilt niet dat een fout op één symbool de hele bot stopt.

Gebruik een per-symbool try-except, zodat je bot blijft draaien voor de andere symbolen.

Zo blijft je risicomanagement stabiel. Je kunt ook een watchdog-timer bouwen. Elke 30 seconden controleert een aparte thread of je bot nog reageert. Als niet, wordt een graceful_shutdown gestart. Dat voorkomt dat je bot urenlang stil staat zonder dat je het merkt.

Praktische tips voor je bot en workflow

  • Gebruik een requirements.txt met vaste versies van ccxt, backtrader, pandas en numpy. Zo voorkom je dat een library-update je bot breekt.
  • Test je graceful_shutdown eerst in een backtest. Simuleer een interrupt en controleer of je logbestanden kloppen.
  • Schrijf altijd je status weg naar een bestand. Bijvoorbeeld: "open_positie: BTC/USDT, entry: 67500, stop: 66000". Zo kun je altijd herstarten zonder data te verliezen.
  • Gebruik een aparte terminal voor je bot. Zet een alias of een script dat je bot start met logging naar een bestand. Zo voorkom je dat je per ongeluk toetsen intypt.
  • Zet een alarm op je VPS. Als je bot stopt, krijg je een pushbericht via Telegram of email. Dat geeft je tijd om in te grijpen.
  • Houd je risicomanagement scherp. Gebruik een max daily loss van bijvoorbeeld 2% van je portfolio. Als je bot stopt, weet je dat je niet meer verliest dan die limiet.

Met deze aanpak voorkom je dat een simpele toetsaanslot je bot en je portfolio in de war stuurt. Door grondige integratietesten met de broker sandbox uit te voeren, wordt je bot robuuster en houd jij de touwtjes in handen.

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 →