Wat is een 'Crontab' en hoe plan je taken in op Linux?
Stel je voor: je hebt een Python-script dat elke ochtend om 06:00 uur een backtest draait op je favoriete aandelenportfolio via de API van je broker, zoals Interactive Brokers of Degiro.
Je wilt niet elke keer handmatig inloggen en op enter drukken. Je wilt dat het gewoon gebeurt, zonder dat je er wakker voor hoeft te worden. Dat is precies waarom je een crontab gebruikt.
Het is een simpele, krachtige tool op Linux die taken automatiseert op vaste tijdstippen. Geen poespas, gewoon doen wat het moet doen.
Wat heb je nodig voordat je begint?
Je hebt een Linux-machine nodig, bijvoorbeeld een Ubuntu-server op een cloudprovider zoals DigitalOcean (vanaf €5 per maand) of een Raspberry Pi thuis.
Zorg dat Python is geïnstalleerd, versie 3.8 of nieuwer, want je trading bots draaien daarop. Je broker-API, zoals die van Alpaca of Binance, moet al werkend zijn; test dit eerst met een script dat een simpele prijsopvraag doet. Een basiskennis van de terminal is handig, maar geen must – we doen alles stap voor stap.
Tijd: reken op 30-45 minuten voor de eerste setup, plus testtijd. Verder heb je toegang nodig tot je Linux-systeem via SSH of directe console.
Zorg dat je sudo-rechten hebt om cron te beheren. Een backtesting-script, bijvoorbeeld met libraries als Backtrader of Zipline, moet al klaarstaan.
Test dit script eerst los: laat het lopen en controleer of de output klopt, zoals een CSV met trade-log. Voorkom frustratie door eerst je omgeving stabiel te maken – niets is erger dan een crontab die faalt omdat je API-key ontbreekt.
Stap 1: Open de terminal en check cron
Start je Linux-systeem op en open de terminal. Op Ubuntu typ je ctrl + alt + t of logt in via SSH met ssh gebruiker@ip-adres.
Cron is standaard geïnstalleerd op de meeste distro's, maar check het even: typ crontab --version.
Als je een versie ziet, zoals "crontab 3.0pl1", ben je good to go. Duurt dit meer dan 1 minuut? Controleer je internetverbinding of vraag je hostingprovider om hulp.
Veelgemaakte fout: vergeten in te loggen als root of sudo-gebruiker, waardoor je geen rechten hebt. Los dit op met sudo su of vraag je admin. Als cron niet geïnstalleerd is, typ sudo apt update && sudo apt install cron – duurt 2-5 minuten, afhankelijk van je verbinding. Test meteen of cron draait: sudo systemctl status cron.
Zie je "active (running)"? Mooi, dan ben je klaar voor de volgende stap.
Stap 2: Maak je Python-script klaar voor scheduling
Je crontab roept een script aan, dus zorg dat het betrouwbaar is.
Sla je trading-bot op in een map, bijvoorbeeld /home/jij/scripts/trading_bot.py. Gebruik absolute paden in je script voor logs en output, zoals /home/jij/logs/backtest_result.csv, om errors te voorkomen. Zorg daarnaast voor veilige toegang tot je trading bot via SSH keys.
Test het script handmatig: python3 /home/jij/scripts/trading_bot.py. Het moet draaien zonder interactie – geen input vragen. Voor risicomanagement: voeg een check toe die stopt als de API-call faalt, bijvoorbeeld met een try-except voor HTTP-errors van je broker. Specifieke maatvoering: je script mag niet langer dan 10-15 minuten draaien per run, anders blokkeer je cron.
Voor backtesting op 1000 trades: benchmark op een Raspberry Pi 4 (€60) duurt 5 minuten, op een cloud-VM (€10/maand) 2 minuten.
Veelgemaakte fout: hardcoded API-keys in het script – verplaats ze naar environment variables met export ALPACA_KEY='jouw_key' in je .bashrc. Zo voorkom je lekken. Zorg voor een schone start en richt je Python virtuele omgeving in voordat je pip install backtrader pandas uitvoert.
Stap 3: Open en bewerk je crontab-bestand
Typ crontab -e in de terminal. Als het de eerste keer is, kies nano als editor – makkelijker dan vim.
Je ziet een leeg bestand met commentaarregels. Voeg een nieuwe regel toe voor je taak.
Voorbeeld: plan een backtest elke dag om 06:00: 0 6 * * * /usr/bin/python3 /home/jij/scripts/trading_bot.py >> /home/jij/logs/cron.log 2>&1. De eerste vijf cijfers zijn de tijd: minuut (0), uur (6), dag van maand (* = elke), maand (* = elke), dag van week (* = elke). De rest is het commando: pad naar python, pad naar script, en log output naar een bestand.
Leg uit: de sterren betekenen "elke" – voor een wekelijkse run op maandag om 09:00, typ 0 9 * * 1. Voor een trading-bot die elke 5 minuten marktdata checkt: */5 * * * *.
Sla op met ctrl+o, enter, en sluit af met ctrl+x. Duurt 2 minuten. Veelgemaakte fout: verkeerd python-pad – check met which python3 en vul dat in. Test meteen: typ crontab -l om je lijst te zien. Zie je je regel? Top.
Stap 4: Test je crontab en los problemen op
Nu testen: wacht tot het geplande tijdstip, of forceer een run door een testregel toe te voegen, zoals * * * * * echo "test" >> /tmp/test.log. Verwijder deze na een minuut met crontab -e.
Voor je trading-bot: check de log na de eerste run met cat /home/jij/logs/cron.log.
Zie je output van je backtest, zoals "Trade executed: AAPL, winst €50"? Dan werkt het. Als niet, controleer fouten:Permission denied? Zet uitvoerrechten op je script: chmod +x /home/jij/scripts/trading_bot.py.
Specifieke tijdsindicaties: cron draait op systeemtijd, dus sync met NTP via sudo timedatectl set-ntp true voor nauwkeurigheid – essentieel voor API-calls rond marktsluiting. Voor risicomanagement: voeg een timeout toe aan je commando, zoals timeout 300 /usr/bin/python3 ... (5 minuten limiet). Veelgemaakte fout: vergeten te loggen, waardoor je niet ziet wat misgaat. Test met een simpele bot die een CSV maakt met prijzen van Binance-API (gratis).
Als je cloud-hosting gebruikt, check firewall-regels: open poort 22 voor SSH, maar niets meer.
Als dingen mislukken, check systeemlogs: journalctl -u cron. Voor Python-scripts: zorg dat je virtual environment activeert met source /home/jij/venv/bin/activate in je crontab-regel, anders missen libraries. Dit voorkomt crashes bij complexe bots met talen zoals TA-Lib voor technische analyse.
Veelgemaakte fouten en tips voor traders
Een klassieke fout: cron niet herstarten na wijzigingen – draai sudo systemctl restart cron als iets niet pakt.
Voor trading-specifiek: vergeet niet je broker-API-limieten te respecteren; plan runs buiten piekuren om rate-limits te vermijden, zoals elke 15 minuten in plaats van elke minuut. Prijzen: een VPS voor 24/7 draaien kost €5-10/maand, maar test eerst lokaal op je laptop. Gebruik tools zoals htop om CPU-gebruik te monitoren en houd je bot sessies actief op de server – je bot mag niet meer dan 20% van je cores gebruiken.
Een andere val: tijdzones. Cron gebruikt UTC, dus pas aan als je in CET zit: voeg TZ=Europe/Amsterdam toe boven je regel in crontab.
Voor backtesting bots: plan na marktsluiting (17:30 EST) om data te verwerken.
Tip: combineer met Git voor versiebeheer – pull je script elke run voor updates. Zo blijft je setup veilig en up-to-date zonder gedoe.
Verificatie-checklist
- Cron geïnstalleerd en draaiend? Check:
sudo systemctl status cron– moet "active" tonen. - Python-script testbaar? Run handmatig:
python3 /pad/naar/script.py– output klopt, geen errors. - Crontab-regel correct? Toon met
crontab -l– tijd en pad kloppen, log bestaat. - Logbestand bijgewerkt? Check na run:
cat /home/jij/logs/cron.log– zie je data van je broker-API? - Geen permission errors? Script uitvoerbaar:
ls -l /pad/naar/script.py– -rwxr-xr-x? - Tijdzone ok? Test met een minuut-taak en vergelijk met systeemtijd:
date. - Risico-check: API-key veilig? Geen in script; limiet runs tot 10/minuut om bans te voorkomen.
Als alles klopt, loopt je trading-bot soepel zonder dat je er aan denkt. Zo win je tijd voor wat telt: strategie verbeteren, niet taken plannen.
