مرجع WebSocket API

استریم داده‌های بلادرنگ برای پوزیشن‌های نهنگ‌ها، نرخ‌های تأمین مالی، لیکوئید شدن‌ها و امتیازات تأیید هوش مصنوعی. تأخیر زیر ثانیه با اتصال مجدد خودکار، فشرده‌سازی کارآمد داده و اشتراک‌های چند استریمی.

مرور کلی

WebSocket API ارتباط دوطرفه با تأخیر کم برای داده‌های بلادرنگ مشتقات ارز دیجیتال فراهم می‌کند. به جای پرس‌وجوی REST هر 5-30 ثانیه، اتصالات WebSocket به‌محض تغییر شرایط بازار، به‌روزرسانی‌ها را ارائه می‌دهند. ایده‌آل برای ربات‌های معاملاتی، سیستم‌های هشدار و داشبوردهای بلادرنگ.

مزایای کلیدی WebSocket نسبت به REST:

تأخیر زیر ثانیه برای رویدادهای تأثیرگذار بازار (لیکوئید شدن‌ها، حرکات نهنگ‌ها)
استفاده کارآمد از پهنای باند با به‌روزرسانی‌های کدگذاری دلتا
اشتراک‌های همزمان چندگانه روی یک اتصال
فیلتر و تجمیع سمت سرور
مدیریت خودکار ضربان قلب و اتصال مجدد
تعداد درخواست API کمتر در سهمیه شما
اتصالات WebSocket برای تمام سطوح API در دسترس هستند. کاربران رایگان می‌توانند به استریم‌های نرخ‌های تأمین مالی و لیکوئید شدن‌ها مشترک شوند. سطوح Trader و Pro پوزیشن‌های نهنگ‌ها، سود باز و امتیازات تأیید را باز می‌کنند.

احراز هویت

اتصالات WebSocket از همان احراز هویت نقاط انتهایی REST استفاده می‌کنند. کلید API خود را به عنوان پارامتر کوئری ارسال کنید یا آن را در اولین پیام پس از اتصال بفرستید.

URL اتصال

URL پایه WebSocket: 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)

سرور هر 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"] }

استریم پوزیشن‌های نهنگ‌ها

به‌روزرسانی‌های بلادرنگ برای پوزیشن‌های بزرگ نهنگ‌ها در تمام نمادها و صرافی‌های ردیابی شده. به‌روزرسانی‌ها زمانی ارسال می‌شوند که نهنگ‌ها پوزیشن‌ها را باز، بسته یا تغییر می‌دهند. شامل قیمت ورود، قیمت فعلی، سود/زیان، اهرم و ریسک لیکوئید شدن است.

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. هر 1 دقیقه یا زمانی که نرخ‌ها به‌طور قابل توجهی تغییر می‌کنند، به‌روزرسانی می‌شود. شامل نرخ‌های صرافی‌های فردی و معیارهای تجمیع شده است.

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 } } }

استریم لیکوئید شدن‌ها

فید بلادرنگ لیکوئید شدن‌ها که بسته شدن اجباری پوزیشن‌های اهرمی را نشان می‌دهد. شامل اندازه پوزیشن، قیمت لیکوئید شدن، جهت (long/short) و صرافی است. برای شناسایی آبشارهای لیکوئید شدن و حرکات بازار با تأثیر بالا مفید است.

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" } }

استریم سود باز

سود باز تجمیع شده برای تمام معامله‌گران اهرمی در هر نماد. افزایش سود باز (ورود پول بیشتر به اهرم) و کاهش (بسته شدن پوزیشن‌ها) را ردیابی کنید. واگرایی سود باز از حرکت قیمت، خستگی پنهان صعودی/نزولی را شناسایی می‌کند.

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("Connected"); this.reconnectDelay = 1000; // Reset backoff this.resubscribe(); // Re-subscribe after reconnect }; 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 });

نمونه‌های کد

کلاینت 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: # Wait for connection ack ack = await websocket.recv() print(f"Connected: {ack}") # Subscribe to whale positions await websocket.send(json.dumps({ "type": "subscribe", "channel": "whale_positions", "symbols": ["BTCUSDT", "ETHUSDT"] })) # Listen for updates while True: try: msg = await websocket.recv() data = json.loads(msg) if data["type"] == "ping": # Respond to 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%).
نظارت بر سلامت اتصال: تأخیر ping/pong و اتصال‌های مجدد خودکار را ردیابی کنید تا مشکلات شبکه را تشخیص دهید.
بافر پیام‌ها در هنگام قطع اتصال: وقتی اتصال قطع می‌شود، سیگنال‌های استراتژی را در صف قرار دهید و هنگام اتصال مجدد آن‌ها را اجرا کنید.

همین حالا استریم را شروع کنید

کلید API خود را دریافت کنید و شروع به ساخت سیستم‌های معاملاتی بلادرنگ کنید. استریمینگ WebSocket در تمام سطوح در دسترس است.

دریافت کلید API

ساخت سیستم‌های معاملاتی بلادرنگ

پوزیشن‌های نهنگ‌ها، نرخ‌های تأمین مالی و امتیازهای تأیید هوش مصنوعی را با تأخیر کمتر از ثانیه استریم کنید.

مشاهده طرح‌ها
شروع رایگان — ۵۰ درخواست در روز، بدون نیاز به کارت

داده‌های زنده جریان نهنگ‌ها، تأمین مالی، موقعیت‌های باز و داده‌های زنجیره‌ای را از ۳ صرافی با یک API دریافت کنید. سطح رایگان، بدون نیاز به کارت اعتباری، ارتقا در هر زمان.

شروع رایگان →
آزمایش کنسول API زنده → (نیاز به حساب کاربری نیست)
کلید API خود را در ۳۰ ثانیه دریافت کنید

آماده ساخت هستید؟ یک کلید API رایگان دریافت کنید (۵۰ درخواست در روز، بدون نیاز به کارت) و شروع به دریافت داده‌های زنده نهنگ‌ها، تأمین مالی و زنجیره‌ای کنید.

دریافت کلید API →