Sie möchten historische Kryptowährungsdaten für Backtesting Ihrer Trading-Strategien sammeln? In diesem Tutorial zeige ich Ihnen Schritt für Schritt, wie Sie die OKX API nutzen, um zuverlässig Marktdaten abzurufen. Keine Vorkenntnisse erforderlich – ich erkläre jeden Schritt für absolute Anfänger verständlich.
Was Sie in diesem Tutorial lernen
- Grundlagen der OKX API und wie Sie den Zugang einrichten
- Historische Kursdaten (OHLCV) automatisch abrufen
- Daten für Backtesting aufbereiten und speichern
- Typische Fehler vermeiden und beheben
- Alternative: KI-gestützte Analyse mit HolySheep AI
Was Sie benötigen
- OKX Konto (kostenlose Registrierung)
- Python 3.8+ installiert
- Grundlegende Programmierkenntnisse (ich erkläre alles)
Schritt 1: OKX API-Zugang einrichten
Bevor Sie Daten abrufen können, benötigen Sie API-Schlüssel von OKX. Navigieren Sie zu Ihrem OKX-Konto und folgen Sie diesen Schritten:
- Melden Sie sich bei www.okx.com an
- Gehen Sie zu „Profil" → „API-Verwaltung"
- Erstellen Sie einen neuen API-Schlüssel mit Leserechten („Nur Lesen")
- Kopieren Sie API Key und Secret Key – Sie benötigen beide später
Hinweis: Geben Sie niemals Ihren Secret Key an Dritte weiter und nutzen Sie ausschließlich Leserechte für Datenabrufe.
Schritt 2: Python-Umgebung vorbereiten
Installieren Sie die benötigten Python-Bibliotheken. Öffnen Sie Ihr Terminal (cmd, PowerShell oder Terminal-App) und geben Sie ein:
pip install requests pandas okxConnector python-dotenv
Alternativ können Sie eine neue virtuelle Umgebung erstellen:
python -m venv krypto_env
source krypto_env/bin/activate # Windows: krypto_env\Scripts\activate
pip install requests pandas okxConnector python-dotenv
Schritt 3: Historische Kursdaten abrufen
Jetzt holen wir echte Marktdaten von OKX. Erstellen Sie eine neue Python-Datei namens okx_data.py:
import requests
import pandas as pd
import json
from datetime import datetime, timedelta
OKX API Konfiguration
BASE_URL = "https://www.okx.com"
API_KEY = "YOUR_OKX_API_KEY"
SECRET_KEY = "YOUR_OKX_SECRET_KEY"
PASSPHRASE = "YOUR_PASSPHRASE"
def get_historical_candles(inst_id="BTC-USDT", bar="1H", limit=100, after=None):
"""
Ruft historische Kerzendaten (OHLCV) von OKX ab.
Parameter:
- inst_id: Trading-Paar (z.B. "BTC-USDT", "ETH-USDT")
- bar: Zeitrahmen ("1m", "5m", "1H", "1D")
- limit: Anzahl der Kerzen (max. 100 pro Anfrage)
- after: Cursor für Pagination (für mehr Daten)
"""
endpoint = "/api/v5/market/history-candles"
url = BASE_URL + endpoint
params = {
"instId": inst_id,
"bar": bar,
"limit": limit
}
if after:
params["after"] = after
headers = {
"Content-Type": "application/json"
}
try:
response = requests.get(url, params=params, headers=headers)
response.raise_for_status()
data = response.json()
if data.get("code") == "0":
candles = data.get("data", [])
# Daten in DataFrame umwandeln
df = pd.DataFrame(candles, columns=[
"timestamp", "open", "high", "low", "close", "volume", "quote_volume"
])
# Timestamp konvertieren
df["timestamp"] = pd.to_datetime(df["timestamp"].astype(float), unit="ms")
# Numerische Spalten konvertieren
for col in ["open", "high", "low", "close", "volume", "quote_volume"]:
df[col] = pd.to_numeric(df[col], errors="coerce")
return df
else:
print(f"API-Fehler: {data.get('msg')}")
return None
except requests.exceptions.RequestException as e:
print(f"Netzwerkfehler: {e}")
return None
Beispiel: Die letzten 100 Stunden-Kerzen von BTC/USDT abrufen
print("Rufe BTC-USDT historische Daten ab...")
df = get_historical_candles(inst_id="BTC-USDT", bar="1H", limit=100)
if df is not None:
print(f"\nErfolgreich {len(df)} Datenpunkte abgerufen!")
print("\nLetzte 5 Einträge:")
print(df.tail())
# Daten als CSV speichern
df.to_csv("btc_historical.csv", index=False)
print("\nDaten gespeichert als 'btc_historical.csv'")
Führen Sie das Skript aus:
python okx_data.py
Sie sollten eine Ausgabe ähnlich dieser sehen:
Rufe BTC-USDT historische Daten ab...
Erfolgreich 100 Datenpunkte abgerufen!
Letzte 5 Einträge:
timestamp open high low close volume
95 2024-01-15 14:00:00 42350.50 42500.00 42280.30 42480.20 1250.50
96 2024-01-15 15:00:00 42480.20 42650.00 42400.00 42620.80 1180.30
97 2024-01-15 16:00:00 42620.