Bollinger Bands plotten met Plotly voor technische analyse

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

Je kijkt naar een grafiek en vraagt je af waar de prijs naartoe gaat.

Bollinger Bands geven je een antwoord in cijfers, niet in giswerk. Ze tonen hoe volatiel de markt is en waar prijzen statistisch gezien kunnen afbuigen.

In de wereld van algoritmische trading bots in Python zijn deze bands een basisbouwsteen voor entry- en exitlogica. Je gebruikt ze in backtests via brokers zoals Interactive Brokers of Alpaca, en je visualiseert ze met Plotly om snel patronen te herkennen. In dit stuk leg ik je precies uit wat Bollinger Bands zijn, hoe je ze met Plotly plotten kunt bouwen, en hoe je ze praktisch toepast in je trading stack.

Wat zijn Bollinger Bands en waarom gebruiken we ze?

Bollinger Bands bestaan uit drie lijnen. De middelste lijn is een simpel voortschrijdend gemiddelde (SMA), meestal over 20 perioden. De bovenste en onderste lijn liggen een aantal standaardafwijkingen daarboven en -onder, vaak 2.

De banden verbreden als de markt volatiel wordt en krimpen als de prijs rustig beweegt.

Je ziet in één oogopslag of de prijs extreem staat ten opzichte van recente bewegingen. Waarom is dat nuttig?

Omdat prijzen gemiddeld terugkeren naar hun midden op korte termijn, maar soms ook doorstomen als er sterke momentum is. Bollinger Bands helpen je om zowel afbreekmomenten (reversals) als doorbraakmomenten (breakouts) te herkennen. In algoritmische trading bots geeft dit je regels voor stoploss, takeprofit en position sizing.

Je kunt een bot laten reageren als de prijs de bovenband raakt, of als de banden smal worden en een uitbraak aankondigt.

Je zet deze logica makkelijk om in Python-code. Met libraries als pandas, numpy en ta-lib bereken je de banden snel voor elke timeframe. En met Plotly creëer je interactieve grafieken waarmee je live of historische data inspecteert. Dat helpt bij het finetunen van parameters en het valideren van je strategie in backtests.

De kern: hoe de banden berekend en geplot worden

De basis is eenvoudig. Neem een dataset met OHLC-prijzen.

Bereken de 20-perioden SMA op de sluitingsprijzen. Tel bij die SMA 2 keer de standaardafwijking op voor de bovenband en trek die af voor de onderband.

De standaardafwijking meet hoe ver de prijs afwijkt van het gemiddelde over dezelfde 20 perioden. In Python doe je dit met pandas. Je laadt een DataFrame met een kolom ‘close’.

Dan draai je deze code: import pandas as pd
df['sma20'] = df['close'].rolling(window=20).mean()
df['std20'] = df['close'].rolling(window=20).std()
df['upper'] = df['sma20'] + (df['std20'] * 2)
df['lower'] = df['sma20'] - (df['std20'] * 2) Daarna plot je met Plotly. Je maakt een lijn voor de SMA, twee lijnen voor de banden en voegt de prijs toe als candlesticks of als lijn.

Plotly is interactief: je kunt inzoomen, pannen en hover-data bekijken met exacte waardes.

Handig voor snelle checks tijdens live trading of tijdens een backtest-analyse. Wil je de banden sneller berekenen voor grote datasets?

Gebruik ta-lib of vectorberekeningen in pandas. Voor risicomanagement voeg je nog een ATR (Average True Range) toe om te zien hoe ver de prijs normaliter beweegt. Zo voorkom je dat je stops te krap zet bij hoge volatiliteit.

Plotly in de praktijk: code en uitleg

Stel je wilt een interactieve grafiek maken voor een aandeel of crypto-paar dat je via een broker zoals Alpaca of Interactive Brokers verhandelt. Je haalt historische data via hun API of je gebruikt een CSV uit je backtesting-omgeving.

Je bouwt de Plotly-grafiek in een paar stappen. Je begint met een figuur en voegt traces toe:

import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Candlestick(x=df.index, open=df['open'], high=df['high'], low=df['low'], close=df['close'], name='Prijs'))
fig.add_trace(go.Scatter(x=df.index, y=df['sma20'], mode='lines', name='SMA 20', line=dict(color='blue')))
fig.add_trace(go.Scatter(x=df.index, y=df['upper'], mode='lines', name='Upper Band', line=dict(color='orange')))
fig.add_trace(go.Scatter(x=df.index, y=df['lower'], mode='lines', name='Lower Band', line=dict(color='orange')))
fig.update_layout(title='Bollinger Bands met Plotly', xaxis_title='Datum', yaxis_title='Prijs')
fig.show() De boven- en onderband zijn oranje, de SMA blauw, en de candlesticks tonen de echte prijsactie. Je kunt de breedte van de banden bekijken door je muis over de grafiek te bewegen.

Zo zie je direct hoe volatiel de markt is op dat moment. Wil je extra inzicht? Voeg een volume-balk toe onder de grafiek. Of teken een tweede paneel met de ‘band width’ (upper minus lower gedeeld door de middellijn).

Die width laat zien wanneer de markt samentrekt en een uitbraak waarschijnlijker wordt.

Dit helpt je bot om alleen trades te nemen als er voldoende bewegingsruimte is. Tip voor risicomanagement: combineer de banden met een stop die rekening houdt met ATR.

Als de ATR bijvoorbeeld €2,50 is, zet je de stop op 1,5 × ATR onder de instap. Zo voorkom je dat je te snel uitgestopt wordt door normale schommelingen binnen de band.

Varianten, modellen en prijsindicaties

De klassieke Bollinger Bands gebruiken een 20-perioden SMA en 2 standaardafwijkingen. Voor daytrading op een 5-minutengrafiek kun je ook een 10-periodes SMA met 1,5 standaardafwijkingen proberen.

Voor swingtrading op dagdata kun je 20 of 30 perioden aanhouden en 2 standaardafwijkingen. Pas de parameters altijd af op je timeframe en het instrument.

Er zijn varianten zoals de Percentage Band (vaste percentages rond de SMA) en de Donchian Channel (hoogste en laagste prijs over een periode). Bollinger Bands zijn populairder omdat ze statistisch gebaseerd zijn en reageren op volatiliteit. Voor momentumstrategieën kijk je naar ‘walking the bands’: prijs blijft langs de boven- of onderkant lopen tijdens een sterke trend. Dat is een signaal dat je niet te snel moet counter-trenden.

  • Prijs raakt de bovenband: mogelijk overbought, maar in een sterke trend kan dit aanhouden. Gebruik extra filters zoals RSI of volume.
  • Prijs raakt de onderband: mogelijk oversold, maar in een dalende trend kan dit blijven liggen.
  • Smalle banden (lage width): consolidatie, wacht op een breakout. Je bot kan hier een break-out entry plannen.
  • Brede banden na een smalle periode: volatiliteit expands, grote beweging verwacht.

Prijsindicaties uit de banden: In algoritmische bots koppel je deze signalen aan regels, of je gebruikt een neuraal netwerk voor prijsactie om patronen te herkennen.

Bijvoorbeeld: long als de prijs boven de SMA sluit én de banden breder worden, met een stop op 1,5 × ATR onder de instap en een takeprofit op 2 × de risk-reward. Test deze regels in een backtestomgeving met een broker API voor realistische fills en kosten. Let op: Bollinger Bands zijn geen magische glazen bol.

Ze geven een statistisch kader. Combineer ze met andere indicatoren en een goede risicomanagementaanpak. Gebruik maximaal 1–2% risico per trade en zorg dat je portfolio niet te zwaar in één positie zit.

Praktische tips voor algoritmische trading met Bollinger Bands

Begin met een stevige data-pipeline. Haal je data via een broker API (Interactive Brokers, Alpaca) of een betrouwbare data-provider.

Sla je historische data lokaal op in parquet of CSV voor snelle toegang tijdens backtests. Zorg dat je tijdreeksen schoon zijn: geen gaten, juiste tijdzone, correcte splitsingen en dividends.

Bouw je backtest omgeving in Python met pandas en eventueel een library als backtrader of vectorbt. Zet de juiste tech-stack op voor je backtest omgeving. Log elke trade met entry, exit, stop, size en kosten. Meet niet alleen winst, maar ook drawdown, Sharpe-ratio en het aantal trades. Pas de Bollinger Band-parameters toe per instrument en timeframe, en vergelijk resultaten.

Gebruik Plotly niet alleen voor evaluatie, maar ook voor debugging. Visualiseer elke trade op de grafiek met markers voor entry en exit.

Zo check je of je bot logisch reageert op de banden. Voeg een indicator toe voor de band width en een tweede paneel voor ATR. Zo zie je in één oogopslag of de markt ruimte biedt voor je setup.

Beheer risico’s concreet. Zet een maximale dagelijks verlieslimiet (bijvoorbeeld 2% van het account) en een maximaal aantal open posities.

Gebruik een slippagemodel in je backtest en houd rekening met commissies. Bij live trading controleer je of je broker de ordertypes ondersteunt die je nodig hebt (limit, stop-limit, OCO).

  1. Zijn de Bollinger Bands duidelijk zichtbaar en actueel?
  2. Is er voldoende band width voor je setup?
  3. Is er extra bevestiging (volume, RSI, trend)?
  4. Is je stop gebaseerd op ATR en je position size passend?
  5. Heb je de trade gevisualiseerd in Plotly voordat je de bot uitvoert?

Test kleine bedragen eerst, bijvoorbeeld 0,1 lot of €100–€500 per trade, voordat je opschaaft. Sluit af met een eenvoudige checklist voor elke trade: Met deze aanpak maak je Bollinger Bands tot een betrouwbaar onderdeel van je algoritmische trading stack.

Je visualiseert helder, je test grondig, en je beheert risico’s strak. Zo blijf je als trader scherp, en je bot wordt een gestructureerde partner in plaats van een gokmachine.

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 →