WebSocket API-Referenz
Echtzeit-Datenstreaming für Whale-Positionen, Funding Rates, Liquidierungen und KI-Bestätigungs-Scores. Sub-Sekunden-Latenz mit automatischer Wiederherstellung, effizienter Datenkomprimierung und Multi-Stream-Abonnements.
Übersicht
Die WebSocket API ermöglicht bidirektionale Kommunikation mit geringer Latenz für Echtzeit-Daten zu Kryptowährungsderivaten. Anstatt REST-Endpoints alle 5-30 Sekunden abzufragen, liefern WebSocket-Verbindungen Updates sofort bei Marktänderungen. Ideal für Trading-Bots, Alarmsysteme und Echtzeit-Dashboards.
Hauptvorteile von WebSocket gegenüber REST:
Sub-Sekunden-Latenz bei marktbewegenden Ereignissen (Liquidierungen, Whale-Bewegungen)
Effiziente Bandbreitennutzung durch delta-kodierte Updates
Mehrere gleichzeitige Abonnements über eine einzelne Verbindung
Serverseitige Filterung und Aggregation
Automatische Herzschlag- und Wiederherstellungsbehandlung
Geringere API-Anfragen gegen Ihr Kontingent
WebSocket-Verbindungen sind für alle API-Tarife verfügbar. Nutzer des kostenlosen Tarifs können Funding-Rates- und Liquidierungs-Streams abonnieren. Trader- und Pro-Tarife ermöglichen Whale-Positionen, Open Interest und Bestätigungs-Scores.
Authentifizierung
WebSocket-Verbindungen verwenden dieselbe Authentifizierung wie REST-Endpoints. Übergeben Sie Ihren API-Schlüssel als Query-Parameter oder senden Sie ihn in der ersten Nachricht nach der Verbindung.
Verbindungs-URL
Basis-WebSocket-URL: wss://ws.smartmoneyapi.com/stream
Fügen Sie Ihren API-Schlüssel in die Verbindungs-URL ein:
wss://ws.smartmoneyapi.com/stream?token=sk_live_abc123xyz789
Verbindungslebenszyklus
Erstverbindung
Wenn Sie eine Verbindung zum WebSocket-Endpoint herstellen, validiert der Server Ihr Authentifizierungstoken und sendet eine Verbindungsbestätigung.
{
"type": "connection_ack",
"connection_id": "conn_1a2b3c4d5e6f7g8h",
"server_version": "1.2.4",
"timestamp": "2026-03-21T14:35:22Z",
"api_tier": "pro",
"max_subscriptions": 50,
"max_symbols_per_sub": 100
}
Herzschlag (Ping/Pong)
Der Server sendet regelmäßige Ping-Nachrichten alle 30 Sekunden. Ihr Client muss mit einer Pong-Nachricht antworten, um die Verbindung aufrechtzuerhalten. Falls der Server innerhalb von 10 Sekunden keine Pong-Antwort erhält, wird die Verbindung geschlossen.
const ws = new WebSocket("wss://ws.smartmoneyapi.com/stream?token=sk_live_abc123xyz789");
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === "ping") {
// Auf Ping mit Pong antworten
ws.send(JSON.stringify({
type: "pong",
id: msg.id
}));
}
};
ws.onopen = () => {
console.log("Mit WebSocket verbunden");
};
Abonnements
Nach der Verbindung können Sie Datenstreams über Abonnement-Nachrichten abonnieren. Jedes Abonnement generiert Updates bei Marktdatenänderungen.
Abonnement-Nachrichtenformat
{
"type": "subscribe",
"channel": "whale_positions",
"symbols": ["BTCUSDT", "ETHUSDT"],
"params": {
"min_position_size": 10,
"exchanges": ["bybit", "binance"]
}
}
Deabonnement-Nachrichtenformat
{
"type": "unsubscribe",
"channel": "whale_positions",
"symbols": ["BTCUSDT"]
}
Whale-Positionen-Stream
Echtzeit-Updates für große Whale-Positionen auf allen verfolgten Symbolen und Börsen. Updates werden gesendet, wenn Whales Positionen eröffnen, schließen oder ändern. Enthält Einstiegspreis, aktuellen Preis, P&L, Hebel und Liquidierungsrisiko.
{
"type": "subscribe",
"channel": "whale_positions",
"symbols": ["BTCUSDT", "ETHUSDT", "SOLUSDT"]
}
Update-Nachricht
{
"type": "data",
"channel": "whale_positions",
"symbol": "BTCUSDT",
"data": {
"wallet_address": "0x1234...",
"exchange": "bybit",
"direction": "long",
"position_size": 25.3,
"entry_price": 41200.0,
"current_price": 43200.5,
"pnl": 50701.50,
"pnl_percent": 4.86,
"leverage": 8,
"liquidation_price": 33760.0,
"timestamp": "2026-03-21T14:35:45Z"
}
}
Funding-Rates-Stream
Echtzeit-Updates zu Funding Rates über Bybit, Binance und Hyperliquid. Updates alle 1 Minute oder bei signifikanten Änderungen. Enthält individuelle Börsenraten und aggregierte Metriken.
{
"type": "subscribe",
"channel": "funding_rates",
"symbols": ["BTCUSDT", "ETHUSDT"]
}
Update-Nachricht
{
"type": "data",
"channel": "funding_rates",
"symbol": "BTCUSDT",
"data": {
"timestamp": "2026-03-21T14:00:00Z",
"bybit": {
"rate": 0.000120,
"next_rate": 0.000145
},
"binance": {
"rate": 0.000098,
"next_rate": 0.000115
},
"hyperliquid": {
"rate": 0.000140,
"next_rate": 0.000160
},
"aggregated": {
"mean": 0.000119,
"median": 0.000120,
"spread": 0.000062
}
}
}
Liquidierungs-Stream
Echtzeit-Feed zu Liquidierungen, die erzwungene Schließungen von gehebelten Positionen zeigen. Enthält Positionsgröße, Liquidierungspreis, Richtung (long/short) und Börse. Nützlich zur Identifizierung von Liquidierungskaskaden und marktbewegenden Ereignissen.
{
"type": "subscribe",
"channel": "liquidations",
"params": {
"min_size_usd": 50000
}
}
Update-Nachricht
{
"type": "data",
"channel": "liquidations",
"data": {
"exchange": "binance",
"symbol": "BTCUSDT",
"direction": "long",
"position_size": 12.5,
"liquidation_price": 41000.0,
"size_usd": 512500.0,
"timestamp": "2026-03-21T14:35:12Z"
}
}
Open-Interest-Stream
Aggregiertes Open Interest für alle Hebelhändler pro Symbol. Verfolgen Sie OI-Anstiege (mehr Geld in Hebelpositionen) und -Rückgänge (Positionenschließungen). OI-Divergenz zur Preisbewegung identifiziert versteckte bullische/bärische Erschöpfung.
{
"type": "subscribe",
"channel": "open_interest",
"symbols": ["BTCUSDT", "ETHUSDT"]
}
Bestätigungs-Scores-Stream
Echtzeit-KI-Bestätigungs-Scores, die Whale-Positionen, On-Chain-Signale, Funding Rates und Sentiment-Daten kombinieren. Scores aktualisieren sich bei Änderungen der zugrundeliegenden Signale und liefern Live-Ein-/Ausstiegssignale für Handelsalgorithmen.
{
"type": "subscribe",
"channel": "confirmation_scores",
"symbols": ["BTCUSDT", "ETHUSDT", "SOLUSDT"]
}
Automatische Wiederherstellungslogik
Netzwerkprobleme oder Serverwartung können zu Verbindungsabbrüchen führen. Implementieren Sie exponentielle Backoff-Wiederherstellungslogik, um automatisch von Fehlern zu erholen und Serverlast zu respektieren.
Empfohlene Wiederherstellungsstrategie
class SmartMoneyWebSocket {
constructor(token, options = {}) {
this.token = token;
this.maxReconnectDelay = options.maxReconnectDelay || 30000;
this.reconnectDelay = 1000;
this.subscriptions = new Map();
this.connect();
}
connect() {
this.ws = new WebSocket(
`wss://ws.smartmoneyapi.com/stream?token=${this.token}`
);
this.ws.onopen = () => {
console.log("Verbunden");
this.reconnectDelay = 1000; // Backoff zurücksetzen
this.resubscribe(); // Nach Wiederherstellung erneut abonnieren
};
this.ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.type === "ping") {
this.ws.send(JSON.stringify({ type: "pong", id: msg.id }));
}
this.onMessage(msg);
};
this.ws.onclose = () => this.reconnect();
this.ws.onerror = (err) => console.error("WebSocket-Fehler:", err);
}
reconnect() {
console.log(`Wiederherstellung in ${this.reconnectDelay}ms`);
setTimeout(() => {
this.connect();
this.reconnectDelay = Math.min(
this.reconnectDelay * 1.5,
this.maxReconnectDelay
);
}, this.reconnectDelay);
}
subscribe(channel, symbols, params) {
const key = `${channel}:${symbols.join(",")}`;
this.subscriptions.set(key, { channel, symbols, params });
this.ws.send(JSON.stringify({ type: "subscribe", channel, symbols, params }));
}
resubscribe() {
for (const { channel, symbols, params } of this.subscriptions.values()) {
this.ws.send(JSON.stringify({ type: "subscribe", channel, symbols, params }));
}
}
onMessage(msg) {
if (msg.type === "data") {
console.log(`Update: ${msg.channel}/${msg.symbol}`, msg.data);
}
}
}
const client = new SmartMoneyWebSocket("sk_live_abc123xyz789");
client.subscribe("whale_positions", ["BTCUSDT", "ETHUSDT"]);
client.subscribe("funding_rates", ["BTCUSDT"]);
client.subscribe("liquidations", [], { min_size_usd: 100000 });
Codebeispiele
Python-WebSocket-Client
import asyncio
import json
import websockets
async def stream_whale_positions():
uri = "wss://ws.smartmoneyapi.com/stream?token=sk_live_abc123xyz789"
async with websockets.connect(uri) as websocket:
# Auf Verbindungsbestätigung warten
ack = await websocket.recv()
print(f"Verbunden: {ack}")
# Whale-Positionen abonnieren
await websocket.send(json.dumps({
"type": "subscribe",
"channel": "whale_positions",
"symbols": ["BTCUSDT", "ETHUSDT"]
}))
# Auf Updates warten
while True:
try:
msg = await websocket.recv()
data = json.loads(msg)
if data["type"] == "ping":
# Auf Ping antworten
await websocket.send(json.dumps({
"type": "pong",
"id": data["id"]
}))
elif data["type"] == "data":
print(f"Neue Position: {data['data']}")
except websockets.exceptions.ConnectionClosed:
print("Verbindung geschlossen, wiederherstellen...")
await asyncio.sleep(1)
asyncio.run(stream_whale_positions())
Serverseitig filtern: Nutzen Sie das params-Objekt, um Daten serverseitig zu filtern (min_position_size, min_size_usd) statt clientseitig.
Abonnements bündeln: Abonnieren Sie mehrere Symbole in einer Nachricht statt einzelner Abonnements pro Symbol.
Unnötige Abonnements kündigen: Kündigen Sie ungenutzte Streams, um Bandbreite zu sparen und Nachrichtenaufkommen zu reduzieren.
Gzip-Komprimierung nutzen: Aktivieren Sie Nachrichtenkomprimierung in Ihrem WebSocket-Client für Bandbreiteneinsparungen (20-40% Reduktion).
Verbindungsstatus überwachen: Tracken Sie Ping/Pong-Latenz und automatische Wiederherstellungen, um Netzwerkprobleme zu diagnostizieren.
Nachrichten bei Abbruch puffern: Bei Verbindungsabbrüchen Strategie-Signale in einer Warteschlange speichern und bei Wiederherstellung ausführen.
Jetzt streamen
Holen Sie sich Ihren API-Schlüssel und beginnen Sie mit dem Aufbau von Echtzeit-Handelssystemen. WebSocket-Streaming ist in allen Tarifen verfügbar.
API-Schlüssel erhalten
Echtzeit-Handelssysteme erstellen
Streamen Sie Wal-Positionen, Funding Rates und KI-Bestätigungswerte mit Sub-Sekunden-Latenz.
Pläne anzeigen