WebSocket API Reference
Streamování dat v reálném čase pro pozice velryb, finanční sazby, likvidace a AI potvrzovací skóre. Subsekundová latence s automatickým opětovným připojením, efektivní komprese dat a více streamových odběrů.
Přehled
WebSocket API poskytuje nízkolatenční, obousměrnou komunikaci pro data kryptoměnových derivátů v reálném čase. Místo dotazování REST endpointů každých 5-30 sekund, WebSocket připojení doručují aktualizace okamžitě, když se změní tržní podmínky. Ideální pro obchodní boty, systémy upozornění a dashboardy v reálném čase.
Klíčové výhody WebSocket oproti REST:
Subsekundová latence pro události pohybující trhem (likvidace, pohyby velryb)
Efektivní využití šířky pásma s delta-kódovanými aktualizacemi
Více současných odběrů na jednom připojení
Filtrování a agregace na straně serveru
Automatické heartbeat a zpracování opětovného připojení
Nižší počet API požadavků proti vaší kvótě
WebSocket připojení jsou dostupná pro všechny úrovně API. Uživatelé bezplatné úrovně se mohou přihlásit k odběru streamů finančních sazeb a likvidací. Úrovně Trader a Pro odemknou pozice velryb, otevřený zájem a potvrzovací skóre.
Autentizace
WebSocket připojení používají stejnou autentizaci jako REST endpointy. Předajte svůj API klíč jako parametr dotazu nebo jej odešlete v první zprávě po připojení.
URL připojení
Základní WebSocket URL: wss://ws.smartmoneyapi.com/stream
Zahrňte svůj API klíč do URL připojení:
wss://ws.smartmoneyapi.com/stream?token=sk_live_abc123xyz789
Životní cyklus připojení
Počáteční připojení
Když se připojíte k WebSocket endpointu, server ověří váš autentizační token a odešle potvrzení připojení.
{
"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
}
Heartbeat (Ping/Pong)
Server posílá periodické heartbeat pingy každých 30 sekund. Váš klient musí odpovědět zprávou pong, aby udržel připojení živé. Pokud server neobdrží odpověď pong do 10 sekund, připojení bude ukončeno.
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") {
// Odpověď na ping s pong
ws.send(JSON.stringify({
type: "pong",
id: msg.id
}));
}
};
ws.onopen = () => {
console.log("Připojeno k WebSocket");
};
Odběry
Po připojení se přihlaste k odběru datových streamů pomocí odběrových zpráv. Každý odběr generuje aktualizace, kdykoli se změní tržní data.
Formát odběrové zprávy
{
"type": "subscribe",
"channel": "whale_positions",
"symbols": ["BTCUSDT", "ETHUSDT"],
"params": {
"min_position_size": 10,
"exchanges": ["bybit", "binance"]
}
}
Formát zprávy pro odhlášení
{
"type": "unsubscribe",
"channel": "whale_positions",
"symbols": ["BTCUSDT"]
}
Stream pozic velryb
Aktualizace v reálném čase pro velké pozice velryb na všech sledovaných symbolech a burzách. Aktualizace jsou odesílány, když velryby otevírají, zavírají nebo upravují pozice. Zahrnuje vstupní cenu, aktuální cenu, P&L, pákový efekt a riziko likvidace.
{
"type": "subscribe",
"channel": "whale_positions",
"symbols": ["BTCUSDT", "ETHUSDT", "SOLUSDT"]
}
Aktualizační zpráva
{
"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"
}
}
Stream finančních sazeb
Aktualizace finančních sazeb v reálném čase napříč Bybit, Binance a Hyperliquid. Aktualizace každou 1 minutu nebo kdykoli se sazby výrazně změní. Zahrnuje individuální sazby burz a agregované metriky.
{
"type": "subscribe",
"channel": "funding_rates",
"symbols": ["BTCUSDT", "ETHUSDT"]
}
Aktualizační zpráva
{
"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
}
}
}
Stream likvidací
Feed likvidací v reálném čase zobrazující nucené uzavření pákových pozic. Zahrnuje velikost pozice, likvidační cenu, směr (long/short) a burzu. Užitečné pro identifikaci kaskád likvidací a tržních pohybů s vysokým dopadem.
{
"type": "subscribe",
"channel": "liquidations",
"params": {
"min_size_usd": 50000
}
}
Aktualizační zpráva
{
"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"
}
}
Stream otevřeného zájmu
Agregovaný otevřený zájem pro všechny pákové obchodníky na každém symbolu. Sledujte nárůsty OI (více peněz vstupujících do páky) a poklesy (uzavírání pozic). Divergence OI od pohybu ceny identifikuje skryté býčí/medvědí vyčerpání.
{
"type": "subscribe",
"channel": "open_interest",
"symbols": ["BTCUSDT", "ETHUSDT"]
}
Stream potvrzovacích skóre
Potvrzovací skóre AI v reálném čase kombinující pozice velryb, on-chain signály, finanční sazby a sentimentální data. Skóre se aktualizují, kdykoli se změní základní signály, poskytující živé signály pro vstup/výstup pro obchodní algoritmy.
{
"type": "subscribe",
"channel": "confirmation_scores",
"symbols": ["BTCUSDT", "ETHUSDT", "SOLUSDT"]
}
Automatická logika opětovného připojení
Problémy se sítí nebo údržba serveru mohou způsobit odpojení. Implementujte exponenciální backoff logiku opětovného připojení, abyste se automaticky zotavili z chyb při respektování zátěže serveru.
Doporučená strategie opětovného připojení
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("Připojeno");
this.reconnectDelay = 1000; // Reset backoff
this.resubscribe(); // Opětovné přihlášení po opětovném připojení
};
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 error:", err);
}
reconnect() {
console.log(`Opětovné připojení za ${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(`Aktualizace: ${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 });
Příklady kódu
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:
# Čekání na potvrzení připojení
ack = await websocket.recv()
print(f"Připojeno: {ack}")
# Přihlášení k odběru pozic velryb
await websocket.send(json.dumps({
"type": "subscribe",
"channel": "whale_positions",
"symbols": ["BTCUSDT", "ETHUSDT"]
}))
# Poslech aktualizací
while True:
try:
msg = await websocket.recv()
data = json.loads(msg)
if data["type"] == "ping":
# Odpověď na ping
await websocket.send(json.dumps({
"type": "pong",
"id": data["id"]
}))
elif data["type"] == "data":
print(f"Nová pozice: {data['data']}")
except websockets.exceptions.ConnectionClosed:
print("Připojení uzavřeno, opětovné připojování...")
await asyncio.sleep(1)
asyncio.run(stream_whale_positions())
Filtrování při přihlášení: Použijte objekt params k filtrování dat na straně serveru (min_position_size, min_size_usd) místo filtrování ve vaší aplikaci.
Dávkové odběry: Přihlaste se k odběru více symbolů v jedné zprávě místo jednoho odběru na symbol.
Odhlášení nepoužívaných: Když již stream nepotřebujete, odhlaste se, abyste ušetřili šířku pásma a snížili objem zpráv.
Použijte gzip kompresi: Povolte kompresi zpráv ve vašem WebSocket klientovi pro úsporu šířky pásma (20-40% snížení).
Sledujte zdraví připojení: Sledujte latenci ping/pong a automatická opětovná připojení k diagnostice problémů se sítí.
Bufferujte zprávy během odpojení: Když připojení spadne, zařaďte strategické signály do fronty a proveďte je po opětovném připojení.
Začněte streamovat nyní
Získejte svůj API klíč a začněte vytvářet systémy pro obchodování v reálném čase. WebSocket streamování je dostupné ve všech úrovních.
Získejte API klíč
Vytvářejte systémy pro obchodování v reálném čase
Streamujte pozice velryb, funding rates a AI potvrzovací skóre s latencí pod sekundu.
Zobrazit plány