Довідник WebSocket API

Потокова передача даних у реальному часі про позиції китів, фандингові ставки, ліквідації та бали підтвердження ШІ. Затримка менше секунди з автоматичним перепідключенням, ефективним стисненням даних та підписками на кілька потоків.

Огляд

WebSocket API забезпечує двосторонній зв’язок із низькою затримкою для даних про криптовалютні деривативи в реальному часі. Замість опитування REST-ендпоінтів кожні 5-30 секунд, WebSocket-з’єднання миттєво надсилають оновлення при зміні ринкових умов. Ідеально підходить для торгових ботів, систем сповіщень та дашбордів у реальному часі.

Ключові переваги WebSocket порівняно з REST:

Затримка менше секунди для подій, що впливають на ринок (ліквідації, дії китів)
Ефективне використання пропускної здатності завдяки дельта-кодуванню оновлень
Кілька одночасних підписок у межах одного з’єднання
Фільтрація та агрегація даних на стороні сервера
Автоматичне керування ping/pong та перепідключенням
Менша кількість запитів до API в межах вашої квоти
WebSocket-з’єднання доступні для всіх рівнів API. Користувачі безкоштовного тарифу можуть підписатися на потоки фандингових ставок і ліквідацій. Торгові та 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 }

Пульс (Ping/Pong)

Сервер надсилає періодичні ping-запити кожні 30 секунд. Ваш клієнт повинен відповідати повідомленням pong, щоб підтримувати з’єднання. Якщо сервер не отримає відповідь pong протягом 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") { // Відповісти на ping повідомленням pong ws.send(JSON.stringify({ type: "pong", id: msg.id })); } }; ws.onopen = () => { console.log("Підключено до 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"] }

Потік балів підтвердження

Бали підтвердження ШІ у реальному часі, що поєднують позиції китів, ончейн-сигнали, фандингові ставки та дані сентименту. Оновлюються при зміні базових сигналів, надаючи сигнали входу/виходу для торгових алгоритмів.

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("Підключено"); 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:", err); } reconnect() { console.log(`Перепідключення через ${this.reconnectDelay}мс`); 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(`Оновлення: ${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-клієнт

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"Підключено: {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": # Відповідь на ping await websocket.send(json.dumps({ "type": "pong", "id": data["id"] })) elif data["type"] == "data": print(f"Нова позиція: {data['data']}") except websockets.exceptions.ConnectionClosed: print("З’єднання розірвано, перепідключення...") await asyncio.sleep(1) asyncio.run(stream_whale_positions())

Поради щодо продуктивності

Фільтруйте при підписці: Використовуйте об’єкт params для фільтрації даних на стороні сервера (min_position_size, min_size_usd) замість фільтрації у вашому додатку.
Групові підписки: Підписуйтеся на кілька символів у одному повідомленні замість окремих підписок для кожного символу.
Скасовуйте непотрібні підписки: Коли потік більше не потрібен, скасуйте підписку, щоб зберегти пропускну здатність та зменшити обсяг повідомлень.
Використовуйте стиснення gzip: Увімкніть стиснення повідомлень у вашому WebSocket-клієнті для економії пропускної здатності (зменшення на 20-40%).
Моніторінг стану з’єднання: Відстежуйте затримки ping/pong та автоматичні перепідключення для діагностики мережевих проблем.
Буферизація повідомлень під час розриву з’єднання: Під час розриву з’єднання ставте сигнали стратегії в чергу та виконуйте їх після перепідключення.

Почніть трансляцію зараз

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

Отримати API-ключ

Створюйте системи торгівлі в реальному часі

Отримуйте дані про позиції китів, ставки фандингу та оцінки підтвердження ШІ з затримкою менше секунди.

Переглянути тарифи
Почніть безкоштовно — 100 запитів/день, без картки

Отримуйте дані про потік китів, фандинг, відкритий інтерес та ончейн-дані з 3 бірж через один API. Безкоштовний тариф, без кредитної картки, оновлення будь-коли.

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

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

Отримайте свій API-ключ →