ATR (Average True Range) berekenen voor dynamische stop-losses

Portret van Alex de Vries, Quantitatief Analist & Algo-Trading Expert
Alex de Vries
Quantitatief Analist & Algo-Trading Expert
Python Libraries voor Algoritmische Trading · 2026-02-15 · 7 min leestijd
Transparantie: Dit artikel bevat affiliate links. Als je via onze link een product koopt, ontvangen wij een kleine commissie. Dit kost jou niets extra en helpt ons om deze site te onderhouden.

Je kent het wel: je hebt een strategie die op papier fantastisch lijkt, maar in de echte markt vliegen je verliezen je om de oren.

Vaak komt dat door een stop-loss die te strak of te los staat. ATR, of Average True Range, is de tool die je gebruikt om je stop-loss dynamisch aan te passen aan de marktvolatiliteit.

Het is een gamechanger voor je risicomanagement. Waarom zou je hiermee aan de slag gaan? Omdat de markt nooit stil staat. Een stop-loss van 50 pips werkt misschien in een rustige markt, maar tijdens een grote aankondiging ben je je positie zo kwijt.

ATR meet de gemiddelde beweging van een asset, zodat je stop-loss meebeweegt.

Zo geef je je trade de ruimte om te ademen.

Wat is ATR eigenlijk?

ATR is een indicator die de volatiliteit van een asset berekent. Het kijkt naar de True Range, wat de grootste beweging is van de huidige candle ten opzichte van de vorige, inclusief gaps. Vervolgens wordt het gemiddelde genomen over een periode, meestal 14 perioden.

Een hogere ATR betekent een onrustigere markt, een lagere ATR een rustigere markt.

Stel, de ATR van Bitcoin is €500. Dan weet je dat de gemiddelde dagelijkse beweging rond de €500 ligt.

Zet je je stop-loss op €200, dan is de kans groot dat je eruit wordt gegooid door normale ruis. Zet je hem op €600, dan geef je de trade meer speling. Simpel, maar krachtig.

De juiste tools kiezen voor ATR in Python

Voordat je gaat rekenen, heb je een paar dingen nodig: een broker met een goede API, een manier om data te fetchen, en libraries om je berekeningen mee te doen. Je wilt geen uren zoeken naar data of een API die continue vastloopt. Kies voor betrouwbare brokers die een API aanbieden voor Python, zoals Interactive Brokers, Alpaca of een broker als Binance voor crypto.

Voor de data zelf kijk je naar libraries als yfinance of ccxt. yfinance is gratis en prima voor aandelen, ccxt is de standaard voor crypto en ondersteunt tientallen exchanges.

Voor de berekening van de ATR zelf heb je eigenlijk geen ingewikkelde tool nodig, maar libraries als pandas en TA-Lib maken het leven een stuk makkelijker.

De code: ATR berekenen met pandas

Je hoeft geen wizard te zijn om ATR te berekenen. Met een paar regels code in Python heb je het al voor elkaar.

We gebruiken hiervoor de populaire pandas library. Zorg dat je eerst je data in een DataFrame hebt staan met kolommen voor 'High', 'Low', en 'Close'.

import pandas as pd

def bereken_atr(data, periode=14):
    # Maak kopieën om shifts mee te doen
    data['H-L'] = data['High'] - data['Low']
    data['H-PC'] = abs(data['High'] - data['Close'].shift(1))
    data['L-PC'] = abs(data['Low'] - data['Close'].shift(1))
    
    # De True Range is het maximum van deze drie
    data['TR'] = data[['H-L', 'H-PC', 'L-PC']].max(axis=1)
    
    # Het gemiddelde over de periode
    data['ATR'] = data['TR'].rolling(window=periode).mean()
    
    return data

Hieronder een simpele berekening zonder externe libraries, puur pandas. Zo begrijp je ook wat er achter de schermen gebeurt. Deze functie berekent eerst de onderlinge verschillen, pakt de grootste beweging per candle (TR), en lijmt die vervolgens aan elkaar over een gemiddelde van 14 perioden.

Simpeler dan dit wordt het niet. Je kunt deze ATR-waarde nu gebruiken om je stop-loss te berekenen, of de Calmar Ratio berekenen voor drawdown analyse om je risico beter in kaart te brengen.

Stap 1: Data van je broker halen

Zonder data ben je nergens. Voor aandelen kun je via yfinance gratis data ophalen.

Voor crypto kijk je naar de API van je exchange. Let op: gratis data is vaak closing data. Voor een accurate ATR wil je de echte High en Low waardes hebben. De meeste brokers bieden historical data endpoints aan via hun API.

import yfinance as yf

# Haal data op voor de afgelopen 2 jaar
data = yf.download('AAPL', start='2022-01-01', end='2023-01-01')
data = bereken_atr(data)
print(data[['Close', 'ATR']].tail())

Een voorbeeld met yfinance: Zo zie je direct de ATR-waardes naast je sluitprijzen. Deze data kun je nu gebruiken in je trading bot of backtesting script.

Stap 2: De dynamische stop-loss berekenen

Nu komt het leuke gedeelte. Je hebt de ATR, nu moet je die vertalen naar een stop-loss.

De meest voorkomende methodes zijn: Stel je koopt een aandeel op €100 en de ATR is €2. Dan zet je je stop-loss op €98 (1x ATR) of €96 (2x ATR).

  • Multiple van ATR: Stop-loss = Entry - (2 * ATR) voor long posities.
  • ATR bij je entry: Stop-loss = Entry - ATR-waarde op het moment van entry.

Als de markt onrustiger wordt (ATR stijgt naar €3), beweegt je stop-loss automatisch mee naar beneden (naar €97 of €94).

Zo bescherm je je winst zonder te strak te zitten.

Een simpel Python script voor je stop-loss

Hieronder een voorbeeld hoe je een stop-loss kunt berekenen in een live situatie. Dit is een stukje logica dat je in je trading bot kunt stoppen.

def set_stop_loss(entry_price, atr_value, multiplier=2, direction='long'):
    if direction == 'long':
        # Bij een long trade zit de stop onder de entry
        stop_loss = entry_price - (multiplier * atr_value)
    else:
        # Bij een short trade zit de stop boven de entry
        stop_loss = entry_price + (multiplier * atr_value)
    return stop_loss

# Voorbeeld
entry = 150.50
huidige_atr = 3.20
mijn_stop = set_stop_loss(entry, huidige_atr)
print(f"Je stop-loss moet op: {mijn_stop:.2f}")

De uitkomst is een getal dat je direct kunt gebruiken voor je order. Je kunt dit koppelen aan de API van je broker om de stop-loss order automatisch te plaatsen. Zo hoef je nooit meer handmatig je stop aan te passen.

Risicomanagement: De juiste multiplier kiezen

Hoeveel ATR je gebruikt, bepaalt je winstpercentage en je risico. Gebruik je een multiplier van 1, dan zit je strak en win je weinig, maar verlies je ook weinig.

Gebruik je 3 of 4, dan geef je de trade veel ruimte, maar is je risico per trade ook groter. Het hangt af van je strategie. Een scalper wil een lage multiplier (bijv. 1.5) omdat hij snel in en uit de markt gaat.

Een swingtrader die posities dagen of weken vasthoudt, kiest eerder voor 2.5 of 3 om marktretourtjes op te vangen. Test dit altijd in je backtesting voordat je het live zet.

Veelgemaakte fouten met ATR

Een valkuil is het blindelings gebruiken van ATR zonder rekening te houden met het karakter van de asset. Een aandeel als Shell reageert anders dan een crypto als Solana.

De ATR van Solana is in dollars vaak vele malen hoger, maar procentueel misschien niet. Zorg dat je je multiplier afstemt op de procentuele beweging. Een andere fout is het vergeten van de ATR-waarde te updaten.

Als je een stop-loss zet bij entry en deze niet meer aanpast, ben je het voordeel van de dynamische stop kwijt.

Zorg dat je script de huidige ATR elke candle of tick opnieuw berekent en de stop indien nodig verplaatst (trailing stop).

Waar te beginnen?

Je hebt geen duizenden euro's nodig om dit te implementeren. De tools die we hebben genoemd zijn gratis of kosten heel weinig.

  • Python: Gratis.
  • yfinance / ccxt: Gratis.
  • TA-Lib: Gratis (maar soms tricky om te installeren, pandas werkt ook prima).
  • Broker API: Hangt van de broker af. Interactive Brokers vereist een account, exchanges zoals Binance hebben gratis API keys.

Begin met een demo-account. Koppel je Python script aan de API van je broker en laat het draaien op historische data (backtesting). Kijk hoe je equity curve eruitziet en de Sharpe Ratio berekenen met Python om je risico-rendement te meten met een multiplier van 1.5 versus 2.5. Pas als je tevreden bent, stap je over op een live account met kleinere bedragen.

Conclusie: Weg met de statische stop-loss

ATR is niet magisch, het is logica. Het zorgt ervoor dat je risicomanagement niet gebaseerd is op een gok, maar op data.

Door je stop-loss te koppelen aan de gemiddelde beweging van de markt, geef je je trades een veel betere kans om te slagen. Het beschermt je in volatiele tijden en zorgt dat je langer in een winnende trade blijft zitten. Start klein.

Pak een asset, bereken de ATR in Python, en ontdek hoe je een automatische stop-loss berekent op basis van de huidige marktvolatiliteit.

Je zult verrast zijn hoeveel rustiger je slaapt met een dynamische stop. En dat is precies wat je nodig hebt als je serieus wilt worden met algoritmisch traden.

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 Python Libraries voor Algoritmische Trading
Ga naar overzicht →