Справочник по WebSocket API

Потоковая передача данных в реальном времени о позициях китов, ставках финансирования, ликвидациях и AI-подтверждениях. Задержка менее секунды с автоматическим переподключением, эффективным сжатием данных и поддержкой множественных подписок.

Обзор

WebSocket API обеспечивает двустороннюю связь с минимальной задержкой для данных о криптовалютных деривативах в реальном времени. В отличие от опроса REST-эндпоинтов каждые 5-30 секунд, WebSocket-подключения мгновенно доставляют обновления при изменении рыночных условий. Идеально подходит для торговых ботов, систем оповещения и дашбордов реального времени.

Ключевые преимущества WebSocket перед REST:

Задержка менее секунды для рыночных событий (ликвидации, движения китов)
Эффективное использование пропускной способности с дельта-кодированием обновлений
Множественные одновременные подписки в одном подключении
Фильтрация и агрегация на стороне сервера
Автоматические пинги и обработка переподключений
Меньшее количество запросов к API в рамках вашего лимита
WebSocket-подключения доступны для всех тарифных планов API. Пользователи бесплатного тарифа могут подписываться на потоки ставок финансирования и ликвидаций. Тарифы Trader и Pro открывают доступ к позициям китов, открытому интересу и очкам подтверждения.

Аутентификация

WebSocket-подключения используют ту же аутентификацию, что и REST-эндпоинты. Передайте ваш API-ключ как параметр запроса или отправьте его в первом сообщении после подключения.

URL подключения

Базовый WebSocket URL: wss://ws.smartmoneyapi.com/stream

Включите ваш API-ключ в URL подключения:

URL
wss://ws.smartmoneyapi.com/stream?token=sk_live_abc123xyz789

Жизненный цикл подключения

Первоначальное подключение

При подключении к WebSocket-эндпоинту сервер проверяет ваш токен аутентификации и отправляет подтверждение подключения.

Ответ сервера (JSON)
{ "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)

Сервер отправляет периодические пинги каждые 30 секунд. Ваш клиент должен отвечать сообщением понг, чтобы поддерживать подключение активным. Если сервер не получает ответ понг в течение 10 секунд, подключение будет закрыто.

JavaScript
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") { // Ответ на пинг сообщением понг ws.send(JSON.stringify({ type: "pong", id: msg.id })); } }; ws.onopen = () => { console.log("Connected to WebSocket"); };

Подписки

После подключения подписывайтесь на потоки данных с помощью сообщений подписки. Каждая подписка генерирует обновления при изменении рыночных данных.

Формат сообщения подписки

JSON
{ "type": "subscribe", "channel": "whale_positions", "symbols": ["BTCUSDT", "ETHUSDT"], "params": { "min_position_size": 10, "exchanges": ["bybit", "binance"] } }

Формат сообщения отписки

JSON
{ "type": "unsubscribe", "channel": "whale_positions", "symbols": ["BTCUSDT"] }

Поток позиций китов

Обновления в реальном времени о крупных позициях китов по всем отслеживаемым символам и биржам. Обновления отправляются при открытии, закрытии или изменении позиций китов. Включает цену входа, текущую цену, P&L, кредитное плечо и риск ликвидации.

JSON — Подписка
{ "type": "subscribe", "channel": "whale_positions", "symbols": ["BTCUSDT", "ETHUSDT", "SOLUSDT"] }

Сообщение обновления

JSON — Обновление
{ "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" } }

Поток ставок финансирования

Обновления ставок финансирования в реальном времени для Bybit, Binance и Hyperliquid. Обновления каждую минуту или при значительном изменении ставок. Включает индивидуальные ставки бирж и агрегированные метрики.

JSON — Подписка
{ "type": "subscribe", "channel": "funding_rates", "symbols": ["BTCUSDT", "ETHUSDT"] }

Сообщение обновления

JSON — Обновление
{ "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 } } }

Поток ликвидаций

Лента ликвидаций в реальном времени, показывающая принудительное закрытие позиций с плечом. Включает размер позиции, цену ликвидации, направление (лонг/шорт) и биржу. Полезно для выявления каскадов ликвидаций и значительных рыночных движений.

JSON — Подписка
{ "type": "subscribe", "channel": "liquidations", "params": { "min_size_usd": 50000 } }

Сообщение обновления

JSON — Обновление
{ "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" } }

Поток открытого интереса

Совокупный открытый интерес для всех трейдеров с плечом по каждому символу. Отслеживайте увеличение OI (больше денег входит в позиции с плечом) и уменьшение (закрытие позиций). Расхождение OI с движением цены выявляет скрытую бычью/медвежью истощенность.

JSON — Подписка
{ "type": "subscribe", "channel": "open_interest", "symbols": ["BTCUSDT", "ETHUSDT"] }

Поток очков подтверждения

AI-очки подтверждения в реальном времени, объединяющие позиции китов, ончейн-сигналы, ставки финансирования и данные сентимента. Очки обновляются при изменении базовых сигналов, предоставляя сигналы входа/выхода для торговых алгоритмов.

JSON — Подписка
{ "type": "subscribe", "channel": "confirmation_scores", "symbols": ["BTCUSDT", "ETHUSDT", "SOLUSDT"] }

Логика автоматического переподключения

Проблемы с сетью или обслуживание сервера могут вызвать разрывы подключения. Реализуйте логику экспоненциальной задержки переподключения для автоматического восстановления после сбоев с учетом нагрузки на сервер.

Рекомендуемая стратегия переподключения

JavaScript
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("Connected"); this.reconnectDelay = 1000; // Сброс задержки this.resubscribe(); // Повторная подписка после переподключения }; 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(`Reconnecting 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 });

Примеры кода

Python WebSocket Client

Python
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: # Ожидание подтверждения подключения ack = await websocket.recv() print(f"Connected: {ack}") # Подписка на позиции китов await websocket.send(json.dumps({ "type": "subscribe", "channel": "whale_positions", "symbols": ["BTCUSDT", "ETHUSDT"] })) # Прослушивание обновлений while True: try: msg = await websocket.recv() data = json.loads(msg) if data["type"] == "ping": # Ответ на пинг await websocket.send(json.dumps({ "type": "pong", "id": data["id"] })) elif data["type"] == "data": print(f"New position: {data['data']}") except websockets.exceptions.ConnectionClosed: print("Connection closed, reconnecting...") await asyncio.sleep(1) asyncio.run(stream_whale_positions())

Советы по производительности

Фильтрация при подписке: Используйте объект params для фильтрации данных на стороне сервера (min_position_size, min_size_usd) вместо фильтрации в вашем приложении.
Пакетные подписки: Подписывайтесь на несколько символов в одном сообщении вместо отдельных подписок для каждого символа.
Отписка от неиспользуемых: Когда поток больше не нужен, отписывайтесь для экономии пропускной способности и уменьшения объема сообщений.
Используйте сжатие gzip: Включите сжатие сообщений в вашем WebSocket-клиенте для экономии пропускной способности (сокращение на 20-40%).
Мониторинг состояния подключения: Отслеживайте задержки пинг/понг и автоматические переподключения для диагностики проблем с сетью.
Буферизация сообщений при разрыве: При разрыве подключения помещайте сигналы стратегии в очередь и выполняйте их после переподключения.

Начать потоковую передачу

Получите свой API-ключ и начните создавать системы для торговли в реальном времени. WebSocket-стриминг доступен на всех тарифах.

Получить API-ключ

Создавайте системы для торговли в реальном времени

Получайте данные о позициях китов, ставках финансирования и оценках подтверждения AI с задержкой менее секунды.

Посмотреть тарифы
Начните бесплатно — 100 запросов/день, без карты

Получайте данные о потоке китов, финансировании, открытом интересе и ончейн-данных с 3 бирж через один API. Бесплатный тариф, без кредитной карты, можно обновиться в любое время.

Начать бесплатно →
Попробовать консоль API в реальном времени → (аккаунт не требуется)
Получите свой API-ключ за 30 секунд

Готовы начать разработку? Получите бесплатный API-ключ (100 запросов/день, без карты) и начните получать данные о китах, финансировании и ончейн-данных в реальном времени.

Получить API-ключ →