مرجع 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 ثانية. يجب على العميل الرد برسالة 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"] }

بث مراكز الحيتان

تحديثات في الوقت الفعلي لمراكز الحيتان الكبيرة على جميع الرموز والمنصات المتابعة. يتم إرسال التحديثات عند فتح الحيتان أو إغلاقها أو تعديل مراكزها. يتضمن سعر الدخول، السعر الحالي، الربح والخسارة، الرافعة المالية، ومخاطر التصفية.

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

بث الفائدة المفتوحة

الفائدة المفتوحة المجمعة لجميع المتداولين ذوي الرافعة المالية على كل رمز. تتبع زيادة الفائدة المفتوحة (المزيد من الأموال تدخل الرافعة المالية) وانخفاضها (إغلاق المراكز). اختلاف الفائدة المفتوحة عن حركة السعر يحدد الإرهاق الصعودي/الهبوطي الخفي.

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 error:", err); } reconnect() { console.log(`إعادة الاتصال في ${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(`تحديث: ${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

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 الخاص بك في 30 ثانية

مستعد للبناء؟ احصل على مفتاح API مجاني (100 استدعاء/يوم، بدون بطاقة) وابدأ في سحب بيانات الحيتان الحي والتمويل وبيانات السلسلة.

احصل على مفتاح API الخاص بك →