เอกสารอ้างอิง WebSocket API

สตรีมข้อมูลแบบเรียลไทม์สำหรับตำแหน่งวาฬ อัตราเงินทุน การชำระบัญชี และคะแนนการยืนยัน AI ความหน่วงน้อยกว่าหนึ่งวินาที พร้อมการเชื่อมต่อใหม่อัตโนมัติ การบีบอัดข้อมูลที่มีประสิทธิภาพ และการสมัครสมาชิกหลายสตรีม

ภาพรวม

WebSocket API ให้การสื่อสารสองทางความหน่วงต่ำสำหรับข้อมูลอนุพันธ์คริปโตแบบเรียลไทม์ แทนที่จะโพล REST endpoints ทุก 5-30 วินาที การเชื่อมต่อ WebSocket จะส่งการอัปเดตทันทีเมื่อสภาพตลาดเปลี่ยนแปลง เหมาะสำหรับบอทเทรด ระบบแจ้งเตือน และแดชบอร์ดแบบเรียลไทม์

ข้อได้เปรียบหลักของ WebSocket เทียบกับ REST:

ความหน่วงน้อยกว่าหนึ่งวินาทีสำหรับเหตุการณ์ที่เคลื่อนตลาด (การชำระบัญชี การเคลื่อนไหวของวาฬ)
การใช้แบนด์วิดท์อย่างมีประสิทธิภาพด้วยการอัปเดตแบบเดลต้า
การสมัครสมาชิกหลายรายการพร้อมกันในการเชื่อมต่อเดียว
การกรองและการรวมข้อมูลฝั่งเซิร์ฟเวอร์
การจัดการการเต้นของหัวใจและการเชื่อมต่อใหม่อัตโนมัติ
จำนวนคำขอ API ที่น้อยลงต่อโควต้าของคุณ
การเชื่อมต่อ WebSocket มีให้สำหรับทุกระดับ API ผู้ใช้ระดับฟรีสามารถสมัครสมาชิกสตรีมอัตราเงินทุนและการชำระบัญชี ระดับ Trader และ Pro ปลดล็อกตำแหน่งวาฬ ดอกเบี้ยเปิด และคะแนนการยืนยัน

การยืนยันตัวตน

การเชื่อมต่อ WebSocket ใช้การยืนยันตัวตนแบบเดียวกับ REST endpoints ส่งคีย์ API ของคุณเป็นพารามิเตอร์ query หรือส่งในข้อความแรกหลังการเชื่อมต่อ

URL การเชื่อมต่อ

URL ฐาน WebSocket: wss://ws.smartmoneyapi.com/stream

รวมคีย์ API ของคุณใน URL การเชื่อมต่อ:

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

วงจรชีวิตการเชื่อมต่อ

การเชื่อมต่อเริ่มต้น

เมื่อคุณเชื่อมต่อกับ WebSocket endpoint เซิร์ฟเวอร์จะตรวจสอบโทเคนยืนยันตัวตนของคุณและส่งการยืนยันการเชื่อมต่อ

การตอบกลับจากเซิร์ฟเวอร์ (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("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"] }

สตรีมตำแหน่งวาฬ

การอัปเดตแบบเรียลไทม์สำหรับตำแหน่งวาฬขนาดใหญ่ในสัญลักษณ์และ exchange ที่ติดตามทั้งหมด ส่งการอัปเดตเมื่อวาฬเปิด ปิด หรือแก้ไขตำแหน่ง รวมถึงราคาเข้า ราคาปัจจุบัน 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 อัปเดตทุก 1 นาทีหรือเมื่ออัตราเปลี่ยนแปลงอย่างมีนัยสำคัญ รวมถึงอัตรา exchange แต่ละแห่งและเมตริกที่รวม

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) และ exchange มีประโยชน์สำหรับการระบุการชำระบัญชีแบบต่อเนื่องและการเคลื่อนไหวตลาดที่มีผลกระทบสูง

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 แบบเรียลไทม์ที่รวมตำแหน่งวาฬ สัญญาณ on-chain อัตราเงินทุน และข้อมูลความรู้สึก คะแนนอัปเดตเมื่อสัญญาณพื้นฐานเปลี่ยนแปลง ให้สัญญาณเข้า/ออกแบบสดสำหรับอัลกอริทึมการเทรด

JSON — สมัครสมาชิก
{ "type": "subscribe", "channel": "confirmation_scores", "symbols": ["BTCUSDT", "ETHUSDT", "SOLUSDT"] }

ตรรกะการเชื่อมต่อใหม่อัตโนมัติ

ปัญหาทางเครือข่ายหรือการบำรุงรักษาเซิร์ฟเวอร์อาจทำให้การเชื่อมต่อขาดหาย ใช้ตรรกะการเชื่อมต่อใหม่แบบ exponential backoff เพื่อกู้คืนจากความล้มเหลวโดยอัตโนมัติในขณะที่เคารพโหลดเซิร์ฟเวอร์

กลยุทธ์การเชื่อมต่อใหม่ที่แนะนำ

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

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

สร้างระบบเทรดแบบเรียลไทม์

สตรีมตำแหน่งวาฬ อัตราเงินกู้ (funding rates) และคะแนนยืนยันจาก AI ด้วยความหน่วงเวลาน้อยกว่าหนึ่งวินาที

ดูแผนต่างๆ
เริ่มต้นฟรี — 100 ครั้ง/วัน ไม่ต้องใช้บัตร

รับข้อมูลการไหลของวาฬแบบสด เงินกู้ (funding) open interest และข้อมูลออนเชนจาก 3 exchange ผ่าน API เดียว แผนฟรี ไม่ต้องใช้บัตรเครดิต อัพเกรดได้ตลอดเวลา

เริ่มต้นฟรี →
ทดลองใช้คอนโซล API สด → (ไม่จำเป็นต้องมีบัญชี)
รับคีย์ API ของคุณภายใน 30 วินาที

พร้อมสร้างแล้วใช่ไหม? รับคีย์ API ฟรี (100 ครั้ง/วัน ไม่ต้องใช้บัตร) และเริ่มดึงข้อมูลวาฬสด เงินกู้ และข้อมูลออนเชน

รับคีย์ API ของคุณ →