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

Was Sie benötigen

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:

  1. Melden Sie sich bei www.okx.com an
  2. Gehen Sie zu „Profil" → „API-Verwaltung"
  3. Erstellen Sie einen neuen API-Schlüssel mit Leserechten („Nur Lesen")
  4. 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.