Veröffentlicht: 15. Januar 2026 | Lesezeit: 12 Minuten | Schwierigkeit: Einsteiger
Einleitung: Was ist ein WebSocket und warum brauchen Sie ihn?
Bevor wir in die technischen Details eintauchen, klären wir eine wichtige Frage: Was bedeutet "WebSocket" eigentlich?
Stellen Sie sich vor, Sie möchten die aktuellen Bitcoin-Kurse in Echtzeit auf Ihrer Website anzeigen. Bei einer herkömmlichen Methode (REST-API) müssten Sie alle paar Sekunden beim Server nachfragen: "Gibt es neue Daten?" – das ist wie ständiges Telefonieren. Ein WebSocket funktioniert hingegen wie eine permanente Telefonleitung: Der Server ruft Sie automatisch an, sobald sich etwas ändert.
In diesem Tutorial lernen Sie, wie Sie die OKX-Börsen-WebSocket-Verbindung einrichten, um Krypto-Kursdaten in Echtzeit zu empfangen – ganz ohne Vorwissen über Programmierung!
💡 Pro-Tipp: Für KI-gestützte Analyse dieser Echtzeit-Daten empfehle ich die HolySheep AI Plattform, die eine latency von unter 50ms bietet und über 85% günstiger ist als herkömmliche Lösungen.
Voraussetzungen: Was Sie benötigen
- Ein OKX-Konto: Falls Sie noch keins haben, registrieren Sie sich auf okx.com
- Python installiert: Laden Sie Python von python.org herunter (Version 3.8 oder höher)
- Ein Code-Editor: VS Code (kostenlos) oder PyCharm Community Edition
- Grundlegendes Verständnis: Bereitschaft zum Lernen!
Schritt 1: Die richtige Umgebung vorbereiten
Öffnen Sie Ihr Terminal (bei Windows: "Eingabeaufforderung" oder "PowerShell", bei Mac/Linux: "Terminal") und geben Sie folgenden Befehl ein:
# Erstellen Sie einen neuen Ordner für Ihr Projekt
mkdir okx-websocket-tutorial
cd okx-websocket-tutorial
Erstellen Sie eine virtuelle Umgebung (isoliert Ihr Projekt)
python -m venv mein-env
Aktivieren Sie die Umgebung
Bei Windows:
mein-env\Scripts\activate
Bei Mac/Linux:
source mein-env/bin/activate
Installieren Sie die benötigte Bibliothek
pip install websocket-client
📸 Screenshot-Hinweis: Ihr Terminal sollte nach erfolgreicher Installation etwa so aussehen: grüner Text "Successfully installed websocket-client-X.X.X"
Schritt 2: Grundlegendes WebSocket-Skript erstellen
Erstellen Sie eine neue Datei namens grundlagen.py und fügen Sie folgenden Code ein:
#!/usr/bin/env python3
"""
OKX WebSocket Grundlagen - Echtzeit-Kursdaten empfangen
Dieses Skript verbindet sich mit OKX und empfängt BTC/USDT-Kurse
"""
import json
import time
from websocket import create_connection, WebSocketException
OKX WebSocket-Endpunkt (öffentliche Daten, kein API-Key nötig!)
OKX_WS_URL = "wss://ws.okx.com:8443/ws/v5/public"
def verbinde_mit_okx():
"""Stellt eine Verbindung zum OKX WebSocket her"""
try:
print("🔌 Verbinde mit OKX WebSocket...")
ws = create_connection(OKX_WS_URL, timeout=10)
print("✅ Verbindung erfolgreich hergestellt!")
return ws
except WebSocketException as e:
print(f"❌ Verbindungsfehler: {e}")
return None
def abonniere_kursdaten(ws):
"""Abonniert BTC/USDT-Kursdaten"""
# Formatierte Subscribe-Nachricht für OKX
nachricht = {
"op": "subscribe",
"args": [{
"channel": "tickers", # Kursdaten-Kanal
"instId": "BTC-USDT" # Handelspaar
}]
}
# Nachricht senden
ws.send(json.dumps(nachricht))
print("📡 Abonnement für BTC/USDT gesendet...")
def empfange_daten(ws, dauer=30):
"""Empfängt Daten für eine bestimmte Zeit (in Sekunden)"""
print(f"⏳ Empfange Daten für {dauer} Sekunden...\n")
startzeit = time.time()
while time.time() - startzeit < dauer:
try:
# Daten empfangen (mit kurzem Timeout)
ws.settimeout(1)
nachricht = ws.recv()
if nachricht:
daten = json.loads(nachricht)
verarbeite_daten(daten)
except Exception as e:
continue
print("\n⏹️ Datenempfang beendet.")
def verarbeite_daten(daten):
"""Verarbeitet und zeigt die empfangenen Daten an"""
# Prüfe ob es Kursdaten sind
if "data" in daten:
for eintrag in daten["data"]:
symbol = eintrag.get("instId", "N/A")
preis = eintrag.get("last", "N/A")
high_24h = eintrag.get("high24h", "N/A")
low_24h = eintrag.get("low24h", "N/A")
volumen = eintrag.get("vol24h", "N/A")
print(f"📊 {symbol}")
print(f" Preis: ${preis}")
print(f" 24h Hoch: ${high_24h} | 24h Tief: ${low_24h}")
print(f" Volumen: {volumen} BTC")
print("-" * 50)
def main():
"""Hauptfunktion"""
print("=" * 60)
print("🚀 OKX WebSocket Tutorial - Grundlagen")
print("=" * 60)
# Verbindung herstellen
ws = verbinde_mit_okx()
if ws:
try:
# Kursdaten abonnieren
abonniere_kursdaten(ws)
# Daten empfangen (30 Sekunden)
empfange_daten(ws, dauer=30)
finally:
ws.close()
print("🔒 Verbindung geschlossen.")
if __name__ == "__main__":
main()
📸 Screenshot-Hinweis: Erstellen Sie die Datei in VS Code: Rechtsklick im Explorer → "Neue Datei" → Namen eingeben → Code einfügen
Schritt 3: Das Skript ausführen
Führen Sie das Skript aus, indem Sie im Terminal eingeben:
python grundlagen.py
Erwartete Ausgabe:
============================================================
🚀 OKX WebSocket Tutorial - Grundlagen
============================================================
🔌 Verbinde mit OKX WebSocket...
✅ Verbindung erfolgreich hergestellt!
📡 Abonnement für BTC/USDT gesendet...
⏳ Empfange Daten für 30 Sekunden...
📊 BTC-USDT
Preis: 43251.50
24h Hoch: 44120.00 | 24h Tief: 42850.00
Volumen: 23456.78 BTC
--------------------------------------------------
📊 BTC-USDT
Preis: 43255.80
24h Hoch: 44120.00 | 24h Tief: 42850.00
Volumen: 23478.12 BTC
--------------------------------------------------
⏹️ Datenempfang beendet.
🔒 Verbindung geschlossen.
Schritt 4: Mehrere Handelspaare abonnieren
Möchten Sie mehrere Kryptowährungen gleichzeitig verfolgen? Kein Problem! Erweitern Sie Ihr Skript:
#!/usr/bin/env python3
"""
OKX WebSocket - Mehrere Handelspaare gleichzeitig
"""
import json
import time
from websocket import create_connection
OKX_WS_URL = "wss://ws.okx.com:8443/ws/v5/public"
Liste der Handelspaare, die Sie abonnieren möchten
HANDELSPAARE = [
"BTC-USDT",
"ETH-USDT",
"SOL-USDT",
"DOGE-USDT"
]
def abonniere_alle_paare(ws, paare):
"""Abonniert mehrere Handelspaare gleichzeitig"""
nachricht = {
"op": "subscribe",
"args": [
{"channel": "tickers", "instId": paar}
for paar in paare
]
}
ws.send(json.dumps(nachricht))
print(f"📡 {len(paare)} Handelspaare abonniert: {', '.join(paare)}")
def main():
print("=" * 60)
print("🚀 OKX WebSocket - Multi-Paar Monitoring")
print("=" * 60)
ws = create_connection(OKX_WS_URL, timeout=10)
print("✅ Verbindung hergestellt!\n")
try:
abonniere_alle_paare(ws, HANDELSPAARE)
# 60 Sekunden lang Daten empfangen
empfangszeit = 60
print(f"\n⏳ Empfange Daten für {empfangszeit} Sekunden...\n")
startzeit = time.time()
while time.time() - startzeit < empfangszeit:
try:
ws.settimeout(1)
nachricht = ws.recv()
if nachricht:
daten = json.loads(nachricht)
# Daten formatieren und anzeigen
if "data" in daten:
for eintrag in daten["data"]:
preis = float(eintrag.get("last", 0))
symbol = eintrag.get("instId", "N/A")
# Emoji basierend auf Symbol
emojis = {
"BTC-USDT": "₿",
"ETH-USDT": "Ξ",
"SOL-USDT": "◎",
"DOGE-USDT": "Ð"
}
emoji = emojis.get(symbol, "💰")
print(f"{emoji} {symbol}: ${preis:,.2f}")
except:
continue
print("\n⏹️ Beendet.")
finally:
ws.close()
if __name__ == "__main__":
main()
Schritt 5: Daten in eine Datei speichern
Für spätere Analysen ist es sinnvoll, die Daten zu speichern:
#!/usr/bin/env python3
"""
OKX WebSocket - Daten in CSV-Datei speichern
"""
import json
import csv
import time
from datetime import datetime
from websocket import create_connection
OKX_WS_URL = "wss://ws.okx.com:8443/ws/v5/public"
CSV-Datei vorbereiten
CSV_DATEI = "kursdaten.csv"
def initialisiere_csv():
"""Erstellt die CSV-Datei mit Kopfzeile"""
with open(CSV_DATEI, mode='w', newline='') as f:
writer = csv.writer(f)
writer.writerow([
"Zeitstempel",
"Symbol",
"Preis",
"24h-Hoch",
"24h-Tief",
"Volumen"
])
print(f"📁 CSV-Datei erstellt: {CSV_DATEI}")
def speichere_in_csv(daten):
"""Speichert einen Datensatz in die CSV-Datei"""
if "data" in daten:
with open(CSV_DATEI, mode='a', newline='') as f:
writer = csv.writer(f)
for eintrag in daten["data"]:
zeile = [
datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
eintrag.get("instId", ""),
eintrag.get("last", ""),
eintrag.get("high24h", ""),
eintrag.get("low24h", ""),
eintrag.get("vol24h", "")
]
writer.writerow(zeile)
def main():
print("=" * 60)
print("🚀 OKX WebSocket - Datenlogger")
print("=" * 60)
initialisiere_csv()
ws = create_connection(OKX_WS_URL, timeout=10)
print("✅ Verbindung hergestellt!\n")
# BTC und ETH abonnieren
nachricht = {
"op": "subscribe",
"args": [
{"channel": "tickers", "instId": "BTC-USDT"},
{"channel": "tickers", "instId": "ETH-USDT"}
]
}
ws.send(json.dumps(nachricht))
print("📡 BTC und ETH abonniert...")
daten_count = 0
startzeit = time.time()
try:
while time.time() - startzeit < 120: # 2 Minuten
try:
ws.settimeout(1)
nachricht = ws.recv()
if nachricht:
daten = json.loads(nachricht)
speichere_in_csv(daten)
daten_count += 1
if daten_count % 10 == 0:
print(f"📝 {daten_count} Datensätze gespeichert...")
except:
continue
finally:
ws.close()
print(f"\n✅ Fertig! {daten_count} Datensätze in {CSV_DATEI} gespeichert.")
if __name__ == "__main__":
main()
Praxisbeispiel: Automatischer Trading-Alert
Ein praktisches Beispiel: Erstellen Sie einen Alarm, der Sie benachrichtigt, wenn der Bitcoin-Preis einen bestimmten Wert erreicht:
#!/usr/bin/env python3
"""
OKX WebSocket - Trading-Alarm System
"""
import json
import time
from websocket import create_connection
OKX_WS_URL = "wss://ws.okx.com:8443/ws/v5/public"
Ihre Alarm-Schwellenwerte
ALARM_THRESHOLD = {
"BTC-USDT": {"max_preis": 50000, "min_preis": 40000},
"ETH-USDT": {"max_preis": 3000, "min_preis": 2500}
}
def checke_alarm(symbol, preis):
"""Prüft ob ein Alarm ausgelöst werden soll"""
if symbol not in ALARM_THRESHOLD:
return None
threshold = ALARM_THRESHOLD[symbol]
if preis >= threshold["max_preis"]:
return f"🔔 ALARM: {symbol} hat ${preis} erreicht (über ${threshold['max_preis']}!)"
if preis <= threshold["min_preis"]:
return f"🔔 ALARM: {symbol} ist auf ${preis} gefallen (unter ${threshold['min_preis']}!)"
return None
def main():
print("=" * 60)
print("🚀 OKX WebSocket - Trading Alarm System")
print("=" * 60)
print("\n📊 Überwachte Paare:")
for symbol, data in ALARM_THRESHOLD.items():
print(f" {symbol}: ${data['min_preis']} - ${data['max_preis']}")
print()
ws = create_connection(OKX_WS_URL, timeout=10)
print("✅ Verbindung hergestellt!")
nachricht = {
"op": "subscribe",
"args": [
{"channel": "tickers", "instId": symbol}
for symbol in ALARM_THRESHOLD.keys()
]
}
ws.send(json.dumps(nachricht))
print("📡 Überwachung aktiv...\n")
try:
while True:
try:
ws.settimeout(1)
daten = json.loads(ws.recv())
if "data" in daten:
for eintrag in daten["data"]:
symbol = eintrag.get("instId", "")
preis = float(eintrag.get("last", 0))
alarm = checke_alarm(symbol, preis)
if alarm:
print(f"\n{'='*50}")
print(f"⚠️ {alarm}")
print(f" Zeit: {time.strftime('%H:%M:%S')}")
print(f"{'='*50}\n")
except:
continue
except KeyboardInterrupt:
print("\n⏹️ Überwachung beendet.")
finally:
ws.close()
if __name__ == "__main__":
main()
Geeignet / Nicht geeignet für
| ✅ Geeignet für | ❌ Nicht geeignet für |
|---|---|
|
|
Preise und ROI
| Anbieter | Monatliche Kosten | Latenz | Kosten pro 1M Token | Ideal für |
|---|---|---|---|---|
| OKX WebSocket (öffentlich) | Kostenlos | ~100-200ms | N/A | Grundlegende Daten |
| OKX WebSocket (API-Key) | Ab $0 | ~80-150ms | N/A | Private Daten |
| HolySheep AI | Ab $0 (kostenlose Credits) | <50ms | GPT-4.1: $8 Claude Sonnet 4.5: $15 DeepSeek V3.2: $0.42 |
KI-Analyse + Daten |
| OpenAI API | Ab $0 + Nutzung | ~200-500ms | $2-15 | Allgemeine KI |
💰 ROI-Analyse: Mit HolySheep AI sparen Sie gegenüber OpenAI 85-94% bei vergleichbarer Qualität. DeepSeek V3.2 kostet nur $0.42 pro Million Token – ideal für die Analyse Ihrer OKX-Marktdaten.
Warum HolySheep wählen
Die OKX WebSocket-Verbindung liefert Ihnen Echtzeit-Kurse, aber wie analysieren Sie diese Daten intelligent? Hier kommt HolySheep AI ins Spiel:
- 💰 Kostenlos starten: Registrieren Sie sich und erhalten Sie kostenlose Credits ohne Kreditkarte
- ⚡ <50ms Latenz: Die schnellste KI-Antwortzeit im Markt
- 💸 WeChat & Alipay: Bezahlung so einfach wie nie für chinesische Nutzer
- 📊 85%+ Ersparnis: GPT-4.1 für $8/MTok vs. $60 bei OpenAI
- 🔗 REST-kompatibel: Einfache Integration mit Ihren bestehenden Python-Skripten
#!/usr/bin/env python3
"""
Beispiel: OKX-Daten mit HolySheep AI analysieren
"""
import requests
import json
HolySheep AI Konfiguration
BASE_URL = "https://api.holysheep.ai/v1"
API_KEY = "YOUR_HOLYSHEEP_API_KEY" # Ersetzen Sie mit Ihrem Key
def analysiere_markttrend(marktdaten_text):
"""
Analysiert Marktdaten mit KI
"""
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
"model": "deepseek-v3.2", # Günstigste Option: $0.42/MTok
"messages": [
{
"role": "system",
"content": "Du bist ein erfahrener Krypto-Analyst. Analysiere Marktdaten und gebe Handlungsempfehlungen."
},
{
"role": "user",
"content": f"Analysiere folgende Marktdaten:\n{marktdaten_text}"
}
],
"temperature": 0.7,
"max_tokens": 500
}
antwort = requests.post(
f"{BASE_URL}/chat/completions",
headers=headers,
json=payload
)
if antwort.status_code == 200:
ergebnis = antwort.json()
return ergebnis["choices"][0]["message"]["content"]
else:
return f"Fehler: {antwort.status_code}"
Beispiel-Nutzung
if __name__ == "__main__":
beispiel_daten = """
BTC-USDT: $43.251,50 (24h: +2.3%)
ETH-USDT: $2.651,80 (24h: +1.8%)
SOL-USDT: $98,45 (24h: +5.2%)
DOGE-USDT: $0,0823 (24h: -0.5%)
"""
analyse = analysiere_markttrend(beispiel_daten)
print("📊 KI-Analyse:")
print(analyse)
Häufige Fehler und Lösungen
1. Verbindungsfehler: "Connection refused"
Ursache: Falsche WebSocket-URL oder Firewall blockiert die Verbindung.
# ❌ FALSCH - Häufige Fehler
OKX_WS_URL = "wss://ws.okx.com/ws/v5/public" # Fehlender Port!
OKX_WS_URL = "https://ws.okx.com:8443/ws/v5/public" # https statt wss!
✅ RICHTIG
OKX_WS_URL = "wss://ws.okx.com:8443/ws/v5/public" # Öffentliche Daten
OKX_WS_URL = "wss://ws.okx.com:8443/ws/v5/private" # Private Daten (API-Key nötig)
2. Subscribe-Fehler: "Illegal argument"
Ursache: Falsches Format der Subscribe-Nachricht.
# ❌ FALSCH - Häufige Fehler
nachricht = {"op": "subscribe", "channel": "tickers", "instId": "BTC-USDT"}
✅ RICHTIG - OKX erwartet "args" als Array
nachricht = {
"op": "subscribe",
"args": [
{"channel": "tickers", "instId": "BTC-USDT"}
]
}
Bei mehreren Paaren:
nachricht = {
"op": "subscribe",
"args": [
{"channel": "tickers", "instId": "BTC-USDT"},
{"channel": "tickers", "instId": "ETH-USDT"}
]
}
3. Timeout beim Empfang von Daten
Ursache: Blockierender Empfangsaufruf ohne Timeout-Einstellung.
# ❌ FALSCH - Hängt unbegrenzt
while True:
nachricht = ws.recv() # Kann ewig warten!
✅ RICHTIG - Mit Timeout
import socket
ws.settimeout(5) # 5 Sekunden Timeout
while True:
try:
nachricht = ws.recv()
daten = json.loads(nachricht)
verarbeite_daten(daten)
except socket.timeout:
print("⏰ Timeout - prüfe Verbindung...")
# Hier Reconnection-Logik einfügen
break
except Exception as e:
print(f"Fehler: {e}")
4. Doppelte oder fehlende Nachrichten
Ursache: Erneutes Senden des Subscribe-Befehls oder Verbindungsprobleme.
# ✅ KOMPLETTE Fehlerbehandlung mit Reconnection
import json
import time
from websocket import create_connection, WebSocketException
class OKXWebSocketClient:
def __init__(self):
self.ws = None
self.max_retries = 5
self.retry_delay = 3
def verbinde(self):
"""Verbindet sich mit automatischer Wiederholung"""
for versuch in range(self.max_retries):
try:
self.ws = create_connection(
"wss://ws.okx.com:8443/ws/v5/public",
timeout=10
)
print("✅ Verbindung hergestellt")
return True
except WebSocketException as e:
print(f"❌ Versuch {versuch+1}/{self.max_retries} fehlgeschlagen")
time.sleep(self.retry_delay)
return False
def subscribe(self, channel, instId):
"""Sendet Subscribe-Nachricht sicher"""
nachricht = {
"op": "subscribe",
"args": [{"channel": channel, "instId": instId}]
}
self.ws.send(json.dumps(nachricht))
print(f"📡 Abonniert: {channel} - {instId}")
def empfange_mit_handling(self, dauer=60):
"""Empfängt Daten mit vollständiger Fehlerbehandlung"""
self.ws.settimeout(1)
start = time.time()
while time.time() - start < dauer:
try:
nachricht = self.ws.recv()
daten = json.loads(nachricht)
# Heartbeat-Nachrichten ignorieren
if "event" in daten:
continue
return daten
except Exception as e:
continue
return None
Nutzung:
if __name__ == "__main__":
client = OKXWebSocketClient()
if client.verbinde():
client.subscribe("tickers", "BTC-USDT")
daten = client.empfange_mit_handling()
Zusammenfassung und nächste Schritte
In diesem Tutorial haben Sie gelernt:
- ✅ Was ein WebSocket ist und warum er für Echtzeit-Daten ideal ist
- ✅ Wie Sie sich mit dem OKX WebSocket verbinden
- ✅ Wie Sie Kursdaten für ein oder mehrere Handelspaare abonnieren
- ✅ Wie Sie Daten in CSV-Dateien speichern
- ✅ Wie Sie ein Alarm-System implementieren
- ✅ Wie Sie häufige Fehler beheben
Nächste Schritte zum Vertiefen:
- Private Daten: Erstellen Sie einen OKX API-Key für den Zugriff auf Ihre Kontodaten
- Order-Platzierung: Nutzen Sie den
trade-Kanal für automatisierte Orders - KI-Integration: Verbinden Sie OKX-Daten mit HolySheep AI für intelligente Analyse
- Multi-Exchange: Erweitern Sie Ihr System um Binance, Coinbase und andere Börsen
Kaufempfehlung
Für Anfänger und Hobby-Trader ist die OKX WebSocket-Verbindung völlig kostenlos und ideal zum Lernen. Wenn Sie jedoch KI-gestützte Marktanalyse benötigen, ist HolySheep AI die beste Wahl:
| 🎯 Meine Empfehlung | |
|---|---|
| Nur Marktdaten: | OKX WebSocket (kostenlos, wie in diesem Tutorial) |
| Marktdaten + KI-Analyse: | HolySheep AI mit DeepSeek V3.2 ($0.42/MTok) |
| Premium KI: | HolySheep mit GPT-4.1 oder Claude Sonnet 4.5 |
Die Kombination aus OKX WebSocket für Echtzeit-Daten und HolySheep AI für die Analyse bietet das beste Preis-Leistungs-Verhältnis am Markt.
👉 Registrieren Sie sich bei HolySheep AI — Startguthaben inklusive
Viel Erfolg beim Programmieren! 🚀