Tutorial: Bouw een crypto trading bot met Python

In deze tutorial laten we je stap voor stap zien hoe je een crypto trading bot maakt. Als je geïnteresseerd bent in het handelen in Bitcoin, kun je overwegen om een trading bot te maken. Met behulp van Python en de ‘ccxt’ bibliotheek kun je een eenvoudige bot maken die automatisch orders plaatst op basis van crpyto-marktgegevens. In dit artikel laten we je stap voor stap zien hoe je dit kunt doen.

Stap 1: Installeer de ‘ccxt’ bibliotheek

Om aan de slag te gaan, moet je de ‘ccxt’ bibliotheek installeren. Dit is een Python-bibliotheek waarmee je verbinding kunt maken met verschillende cryptocurrency-uitwisselingen en orders kunt plaatsen. Open de terminal en voer het volgende commando in:

pip install ccxt

Stap 2: Verbind met een cryptocurrency exchange

Nu je de ‘ccxt’ bibliotheek hebt geïnstalleerd, is het tijd om verbinding te maken met een cryptocurrency-exchange. Voor dit voorbeeld gebruiken we de Binance exchange. Hier is de code om verbinding te maken:

import ccxt

exchange = ccxt.binance({
    'rateLimit': 2000,
    'enableRateLimit': True,
})

Met de bovenstaande code maak je verbinding met de Binance-uitwisseling en stel je de limieten in voor de uitwisselingssnelheid.

Stap 3: Verzamel en analyseer Bitcoin-marktgegevens

Nu je verbonden bent met de uitwisseling, is het tijd om Bitcoin-marktgegevens te verzamelen en te analyseren. In dit voorbeeld verzamelen we dagelijkse Open-High-Low-Close-Volume (OHLCV) gegevens en berekenen we het 20-daagse en 50-daagse voortschrijdend gemiddelde. Hier is de code om de gegevens te verzamelen en te analyseren:

import pandas as pd

symbol = 'BTC/USDT'

ohlcv = exchange.fetch_ohlcv(symbol, '1d')
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
df.set_index('timestamp', inplace=True)
df['ma20'] = df['close'].rolling(window=20).mean()
df['ma50'] = df['close'].rolling(window=50).mean()

last_row = df.iloc[-1]
if last_row['ma20'] > last_row['ma50']:
    print('Buy!')
else:
    print('Sell!')

Met de bovenstaande code verzamelen we de dagelijkse OHLCV-gegevens van Bitcoin tegen USDT. Vervolgens zetten we deze gegevens om in een DataFrame en berekenen we het 20-daagse en 50-daagse voortschrijdend gemiddelde. Als het 20-daagse voortschrijdend gemiddelde hoger is dan het 50-daagse voortschrijdend gemiddelde, printen we ‘Buy!’, anders printen we ‘Sell!’.

Stap 4: Plaats orders op basis van marktgegevens

Nu we Bitcoin-marktgegevens hebben verzameld en geanalyseerd, is het tijd om orders te plaatsen op basis van deze gegevens. In dit voorbeeld plaatsen we een eenvoudige limietorder om Bitcoin te kopen wanneer het 20-daagse voortschrijdend gemiddelde hoger is dan het 50-daagse voortschrijdend gemiddelde.

Hier is de code om een kooporder te plaatsen:

symbol = 'BTC/USDT'

balance = exchange.fetch_balance()
usdt_balance = balance['USDT']['free']
last_row = df.iloc[-1]

if last_row['ma20'] > last_row['ma50']:
    amount = usdt_balance / last_row['close']
    print(f'Buying {amount} BTC at {last_row["close"]} USDT')
    exchange.create_limit_buy_order(symbol, amount, last_row['close'])

Met de bovenstaande code verzamelen we het saldo van onze USDT-account en bepalen we hoeveel Bitcoin we kunnen kopen. Als het 20-daagse voortschrijdend gemiddelde hoger is dan het 50-daagse voortschrijdend gemiddelde, plaatsen we een limietkooporder om Bitcoin te kopen.

Je kunt ook een verkooporder plaatsen op basis van dezelfde analyse. Hier is de code om een verkooporder te plaatsen:

symbol = 'BTC/USDT'

balance = exchange.fetch_balance()
btc_balance = balance['BTC']['free']
last_row = df.iloc[-1]

if last_row['ma20'] < last_row['ma50']:
    print(f'Selling {btc_balance} BTC at {last_row["close"]} USDT')
    exchange.create_limit_sell_order(symbol, btc_balance, last_row['close'])

Met de bovenstaande code verzamelen we het saldo van onze Bitcoin-account en plaatsen we een limietverkooporder om Bitcoin te verkopen als het 20-daagse voortschrijdend gemiddelde lager is dan het 50-daagse voortschrijdend gemiddelde.

Stap 5: Voer de bot uit

Nu we alle code hebben geschreven, is het tijd om de bot uit te voeren. Hier is de code om de bot uit te voeren:

while True:
    symbol = 'BTC/USDT'

    ohlcv = exchange.fetch_ohlcv(symbol, '1d')
    df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
    df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
    df.set_index('timestamp', inplace=True)
    df['ma20'] = df['close'].rolling(window=20).mean()
    df['ma50'] = df['close'].rolling(window=50).mean()

    balance = exchange.fetch_balance()
    usdt_balance = balance['USDT']['free']
    btc_balance = balance['BTC']['free']
    last_row = df.iloc[-1]

    if last_row['ma20'] > last_row['ma50']:
        amount = usdt_balance / last_row['close']
        print(f'Buying {amount} BTC at {last_row["close"]} USDT')
        exchange.create_limit_buy_order(symbol, amount, last_row['close'])
    elif last_row['ma20'] < last_row['ma50']:
print(f'Selling {btc_balance} BTC at {last_row["close"]} USDT')
exchange.create_limit_sell_order(symbol, btc_balance, last_row['close'])
time.sleep(60)

Met de bovenstaande code voeren we de bot uit in een oneindige lus. Binnen deze lus halen we de nieuwste Bitcoin-gegevens op van de beurs, voeren we onze analyse uit en plaatsen we indien nodig koop- of verkooporders.

We hebben ook een time.sleep(60) opgenomen in de lus om de bot 60 seconden te laten wachten voordat hij opnieuw wordt uitgevoerd. Dit is om overbelasting van de beurs-API te voorkomen en om ervoor te zorgen dat we geen onnodige transactiekosten betalen door te veel handelsorders te plaatsen.

Resultaat: Een crypto trading bot die automatisch in Bitcoin handelt

In deze tutorial hebben we geleerd hoe we een eenvoudige crypto trading bot kunnen maken met Python. We hebben marktgegevens verzameld, geanalyseerd en op basis van deze analyse koop- en verkooporders geplaatst. Deze tutorial is slechts een basisvoorbeeld van hoe een trading bot kan worden gebouwd en kan worden uitgebreid en aangepast aan jouw specifieke handelsstrategieën.

Als je meer wilt leren over het bouwen van trading bots met Python, zijn er verschillende bibliotheken en frameworks beschikbaar, zoals ccxt, PyAlgoTrade en Backtrader. Deze bibliotheken bieden een breed scala aan functies en mogelijkheden om complexere handelsstrategieën te implementeren en geavanceerde analyse uit te voeren.

Het is belangrijk om te onthouden dat handelen in cryptocurrencies risicovol kan zijn en dat je altijd je eigen onderzoek moet doen voordat je een handelsbeslissing neemt. Het bouwen van een trading bot kan helpen bij het verminderen van het risico en het automatiseren van je handelsstrategie, maar het is geen garantie voor succes.

Meer tutorials volgens? Bekijk dan onze tutorial-pagina.