Hoe herstel je de 'State' van je bot na een plotselinge crash?
Een bot die midden in de nacht crasht terwijl je slaapt, is een nachtmerrie. Je schrikt wakker, je portfolio ziet erger uit dan je ochtendhumeur en je weet niet precies wat er is gebeurd. Rustig ademhalen.
We fixen dit samen, stap voor stap. Je bot heeft een 'state' nodig om te weten wat hij deed toen de boel vastliep.
Zonder die state weet hij niet meer of hij een positie open heeft, wat zijn entry was of hoeveel risico hij loopt. Herstellen is niet moeilijk, maar je moet wel secuur werken.
Wat je nodig hebt voordat je begint
Je hebt een paar dingen nodig. Een Python-omgeving met je bot-code, toegang tot je broker-API en een schone kopie van je state-bestanden.
Zorg dat je weet welke broker je gebruikt, bijvoorbeeld Interactive Brokers, Binance, of Bitvavo. Je hebt ook een backtesting-omgeving nodig om je herstelde state te valideren. Gebruik een lokaal bestand als state (JSON of SQLite) en een apart logbestand voor transacties. Zorg dat je weet hoe je de bot handmatig kunt starten en stoppen.
- Python 3.9 of nieuwer
- Broker-API key en secret (of IB Gateway)
- Lokale state-file (bijv. bot_state.json)
- Transactielog (bijv. trades.csv)
- Backtesting-script met Pandas en Backtrader of VectorBT
- Een tweede account of testnet voor veilig testen
Stap 1: Schakel de bot direct uit en maak een snapshot
Stop de bot meteen. Geen twijfel mogelijk. Sluit alle open verbindingen met de broker-API en zet eventuele cron-jobs of scheduled tasks stil.
Je wilt geen nieuwe trades terwijl je aan het repareren bent. Maak een snapshot van je huidige bestanden.
Kopieer je state-file, transactielog en eventuele order-logs naar een aparte map met een timestamp. Bijvoorbeeld: backup_20250512_0815/. Dit duurt 2 minuten en voorkomt dat je per ongeluk iets overschrijft. Veelgemaakte fout: vergeten om de API-verbinding te sluiten.
Controleer of je broker-cliënt echt 'disconnected' is. Bij IB: stop de TWS/Gateway. Bij Binance: sluit de websocket. Check je broker-dashboard op open orders.
Stap 2: Verzamel de benodigde data van je broker
Je moet weten wat je bot deed vlak voor de crash. Haal via de API je open posities, orderhistorie en rekeningsaldo op.
Sla deze data op in aparte bestanden: open_positions.json, order_history.json, account_snapshot.json. Gebruik een script om deze gegevens te halen, bijvoorbeeld: Timing: plan 15-30 minuten voor dit proces.
python fetch_broker_state.py --account live --output ./backup_20250512_0815/
Brokers zoals Interactive Brokers geven niet altijd alle historie via de API; je kunt ook je broker-portal raadplegen voor de laatste 24 uur. Veelgemaakte fout: vertrouwen op alleen je lokale state.
Je broker is de waarheid. Als je bot crashte tijdens een order, kan de broker die hebben uitgevoerd terwijl je bot niets wist.
Check dus altijd het broker-dashboard.
Stap 3: Analyseer wat er misging en bepaal de herstelstrategie
Open je logbestanden en zoek naar foutmeldingen rond de crash-tijd. Kijk naar API-timeouts, HTTP-fouten (bijv. of geheugenproblemen bij langdurige runs veroorzaken.
429 rate limits), of geheugenproblemen. Noteer de exacte timestamp van de crash. Bepaal welke 'state' je moet herstellen: open posities, gemiddelde entry, stop-loss/take-profit levels, en het risico per trade.
Als je bot een trailing stop gebruikt, check dan of die nog actief was.
- Was er een open positie?
- Was er een onvoltooide order (limit/stop)?
- Is er een stop-loss of TP uitgevoerd?
- Is het accountsaldo veranderd?
Gebruik een eenvoudige checklist voor je analyse: Timing: 20-40 minuten. Veelgemaakte fout: te snel aannemen dat de bot 'niets' deed. Vaak is er net een order uitgevoerd voor de crash.
Stap 4: Herstel de state met je transactielog
Je transactielog is je waarheid. Bouw de state opnieuw op vanaf het laatste bekende goede punt. Als je een JSON-state hebt, update deze met de werkelijke posities en waarden uit de broker-data.
Stel je hebt een JSON-state met keys zoals: account_id, symbol, position_size, entry_price, stop_loss, take_profit, risk_per_trade.
{"symbol": "AAPL", "position_size": 50, "entry_price": 182.40, "stop_loss": 175.00, "take_profit": 195.00, "risk_per_trade": 1.5}
Vul deze aan met de werkelijke data. Voorbeeld: Als je bot een database gebruikt (SQLite), voer dan SQL-updates uit om de state tabel bij te werken.
Gebruik een transaction log om elke wijziging te documenteren. Zorg dat je rollback kunt doen. Timing: 30-60 minuten.
Veelgemaakte fouten: verkeerde eenheden (bijv. contracts vs. aandelen), vergeten fees meerekenen, of verkeerde valuta (EUR vs. USD).
Check altijd broker-specifieke eenheden.
Stap 5: Backtest het herstelde scenario
Test je herstelde state in een backtesting-omgeving. Gebruik een script dat je exacte broker-logica simuleert: fees, slippage, order types.
Bijvoorbeeld met Backtrader of VectorBT in Python. Voer een backtest uit over de periode van de crash tot nu.
Gebruik dezelfde marktdata als je broker (1-min of 5-min candles). Controleer of je stop-loss en take-profit levels kloppen en of je risicobeheer intact is. Timing: 45-90 minuten. Veelgemaakte fouten: te weinig data gebruiken, vergeten om dividend/splits mee te nemen, of de verkeerde ticker gebruiken.
Voor crypto: check of je stablecoin-pair klopt (bijv. BTC/USDT vs. BTC/EUR). Resultaat: je wilt zien dat de backtest dezelfde trades en resultaten laat zien als je broker-log.
Als er afwijkingen zijn, pas je state en logica aan.
Stap 6: Herstart de bot veilig en monitor intensief
Start de bot opnieuw op, maar begin met een kleine positie of in paper-trading modus.
Zet de bot aan en kijk de eerste 15-30 minuten live mee. Gebruik een aparte terminal of dashboard voor logs. Stel waarschuwingen in via je broker of een tool als Telegram/Discord bot-meldingen.
Check of de bot de herstelde state laadt en correct uitvoert. Zet eventuele automatische herstart-scripts tijdelijk uit, zeker als je fouten door onvoldoende saldo wilt voorkomen.
Timing: 60-120 minuten intensief monitoren. Veelgemaakte fouten: te snel weer volledig automatisch draaien, of vergeten om de risk-per-trade terug te zetten naar normale levels. Zorg dat je altijd een emergency dashboard bij de hand hebt om posities direct te sluiten.
Houd het eerste uur de handmatige controle erop.
Verificatie-checklist na herstel
Gebruik deze checklist om zeker te weten dat je bot weer veilig draait: Als je alle punten kunt afvinken, is je bot weer in een betrouwbare state.
- Bot is gestopt en alle API-verbindingen zijn gesloten.
- Backup van state en logs is gemaakt en timestamped.
- Broker-data is opgehaald en vergeleken met je lokale state.
- Open posities en onvoltooide orders kloppen met de broker.
- State is herbouwd uit transactielog en gecontroleerd op eenheden en fees.
- Backtest toont dezelfde resultaten als de broker-log.
- Bot is herstart met kleine positie of paper-trading.
- Monitoring en waarschuwingen staan aan voor de eerste 2 uur.
- Risk-per-trade en stop-loss levels zijn correct ingesteld.
- Documentatie van de crash en herstel is bijgehouden voor de volgende keer.
En onthoud: elke crash is een leermoment. Sla je herstelstappen op, zodat je de volgende keer nog sneller bent.
