WebSocket API Reference
වේල් ස්ථාන, අරමුදල් අනුපාත, ද්රවීකරණ, සහ AI තහවුරු කිරීමේ ලකුණු සඳහා තත්පරයට අඩු ප්රමාදයකින් යුත් තත්ත්ව දත්ත ප්රවාහය. ස්වයංක්රීය නැවත සම්බන්ධ වීම, කාර්යක්ෂම දත්ත සංකෝචනය, සහ බහු-ප්රවාහ දායකත්වය.
දළ විශ්ලේෂණය
WebSocket API තත්ත්ව ක්රිප්ටෝකරන්සි ව්යුත්පන්න දත්ත සඳහා අඩු ප්රමාදයකින් යුත්, ද්වි-දිශා සන්නිවේදනය සපයයි. REST අන්ත ලක්ෂ්ය සෑම 5-30 තත්පරයකට වාරිකව පරීක්ෂා කිරීම වෙනුවට, WebSocket සම්බන්ධතාවයන් වෙළඳපොල තත්ත්වයන් වෙනස් වන විට වහාම යාවත්කාලීන කරයි. වෙළඳ බොට්, ඇඟවීම් පද්ධති, සහ තත්ත්ව ඩෑෂ්බෝඩ් සඳහා පරිපූර්ණයි.
REST ට වඩා WebSocket හි ප්රධාන වාසි:
වෙළඳපොල චලනය වන සිදුවීම් සඳහා තත්පරයට අඩු ප්රමාදය (ද්රවීකරණ, වේල් චලනයන්)
ඩෙල්ටා-සංකේතනය කරන ලද යාවත්කාලීන කිරීම් සමඟ කාර්යක්ෂම බෑන්ඩ්විඩ්ත් භාවිතය
එක් සම්බන්ධතාවයක් මත බහු සමගාමී දායකත්වය
සේවාදායක පාර්ශවීය පෙරහන සහ එකතු කිරීම
ස්වයංක්රීය හෘද ස්පන්දන සහ නැවත සම්බන්ධ වීමේ හැසිරීම
ඔබේ කෝටාවට එරෙහිව අඩු API ඉල්ලීම් ගණන
WebSocket සම්බන්ධතාවයන් සියලුම API තල සඳහා ලබා ගත හැකිය. නිදහස් තල පරිශීලකයින්ට අරමුදල්-අනුපාත සහ ද්රවීකරණ ප්රවාහ වලට දායක විය හැකිය. වෙළෙන්දා සහ Pro තල වලින් වේල් ස්ථාන, විවෘත උනන්දුව, සහ තහවුරු කිරීමේ ලකුණු අගුළු හරිනු ලැබේ.
සත්යාපනය
WebSocket සම්බන්ධතාවයන් REST අන්ත ලක්ෂ්ය සමඟ සමාන සත්යාපනය භාවිතා කරයි. ඔබේ API යතුර ප්රශ්න පරාමිතියක් ලෙස යොමු කරන්න හෝ සම්බන්ධ වීමෙන් පසු පළමු පණිවුඩයේ එය යවන්න.
සම්බන්ධතා URL
පාදක WebSocket URL: wss://ws.smartmoneyapi.com/stream
ඔබේ API යතුර සම්බන්ධතා URL හි ඇතුළත් කරන්න:
wss://ws.smartmoneyapi.com/stream?token=sk_live_abc123xyz789
සම්බන්ධතා ජීවන චක්රය
ආරම්භක සම්බන්ධතාවය
ඔබ WebSocket අන්ත ලක්ෂ්යයට සම්බන්ධ වන විට, සේවාදායකය ඔබේ සත්යාපන ටෝකන් වලංගු කර සම්බන්ධතා එකගතාවයක් යවයි.
{
"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 තත්පරයක් ඇතුළත, සම්බන්ධතාවය වසා දමනු ඇත.
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") {
// Respond to ping with pong
ws.send(JSON.stringify({
type: "pong",
id: msg.id
}));
}
};
ws.onopen = () => {
console.log("Connected to WebSocket");
};
දායකත්වය
සම්බන්ධ වීමෙන් පසු, දත්ත ප්රවාහ වලට දායක වීමට දායකත්ව පණිවුඩ භාවිතා කරන්න. සෑම දායකත්වයක්ම වෙළඳපොල දත්ත වෙනස් වන විට යාවත්කාලීන කරයි.
දායකත්ව පණිවුඩ ආකෘතිය
{
"type": "subscribe",
"channel": "whale_positions",
"symbols": ["BTCUSDT", "ETHUSDT"],
"params": {
"min_position_size": 10,
"exchanges": ["bybit", "binance"]
}
}
අදායකත්ව පණිවුඩ ආකෘතිය
{
"type": "unsubscribe",
"channel": "whale_positions",
"symbols": ["BTCUSDT"]
}
වේල් ස්ථාන ප්රවාහය
සියලුම අධීක්ෂණය කරන සංකේත සහ විනිමයන් මත විශාල වේල් ස්ථාන සඳහා තත්ත්ව යාවත්කාලීන කිරීම්. වේල් ස්ථාන විවෘත කරන විට, වසා දමන විට, හෝ වෙනස් කරන විට යාවත්කාලීන කිරීම් යවනු ලැබේ. ඇතුළත් වීමේ මිල, වත්මන් මිල, P&L, ලෙවරේජ්, සහ ද්රවීකරණ අවදානම ඇතුළත් වේ.
{
"type": "subscribe",
"channel": "whale_positions",
"symbols": ["BTCUSDT", "ETHUSDT", "SOLUSDT"]
}
යාවත්කාලීන පණිවුඩය
{
"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 විනාඩියකට වාරිකව හෝ අනුපාත සැලකිය යුතු ලෙස වෙනස් වන විට යාවත්කාලීන කිරීම්. තනි විනිමය අනුපාත සහ එකතු කරන ලද මෙට්රික්ස් ඇතුළත් වේ.
{
"type": "subscribe",
"channel": "funding_rates",
"symbols": ["BTCUSDT", "ETHUSDT"]
}
යාවත්කාලීන පණිවුඩය
{
"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
}
}
}
ද්රවීකරණ ප්රවාහය
ලෙවරේජ් ස්ථානවල බලහත්කාරයෙන් වසා දැමීම් පෙන්වන තත්ත්ව ද්රවීකරණ පෝෂණය. ස්ථාන ප්රමාණය, ද්රවීකරණ මිල, දිශාව (දිග/කෙටි), සහ විනිමය ඇතුළත් වේ. ද්රවීකරණ කැස්කේඩ් සහ ඉහළ බලපෑම් වෙළඳපොල චලනයන් හඳුනා ගැනීමට ප්රයෝජනවත්.
{
"type": "subscribe",
"channel": "liquidations",
"params": {
"min_size_usd": 50000
}
}
යාවත්කාලීන පණිවුඩය
{
"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 වෙනස් වීම් රහස් ගොඩනැගිලි/බිය අවසානයන් හඳුනා ගනී.
{
"type": "subscribe",
"channel": "open_interest",
"symbols": ["BTCUSDT", "ETHUSDT"]
}
තහවුරු කිරීමේ ලකුණු ප්රවාහය
වේල් ස්ථාන, ඔන්-චේන් සංඥා, අරමුදල් අනුපාත, සහ සංවේදන දත්ත ඒකාබද්ධ කරන තත්ත්ව AI තහවුරු කිරීමේ ලකුණු. යටිතල සංඥා වෙනස් වන විට ලකුණු යාවත්කාලීන වන අතර, වෙළඳ ඇල්ගොරිතම සඳහා සජීවී ඇතුළත්/පිටවීම් සංඥා සපයයි.
{
"type": "subscribe",
"channel": "confirmation_scores",
"symbols": ["BTCUSDT", "ETHUSDT", "SOLUSDT"]
}
ස්වයංක්රීය නැවත සම්බන්ධ වීමේ තර්කය
ජාල ගැටළු හෝ සේවාදායක නඩත්තුව නිසා සම්බන්ධතාවයන් බිඳ වැටිය හැකිය. සේවාදායක බර ගරුත්වයෙන් යුතුව අසාර්ථක වීම් වලින් ස්වයංක්රීයව ප්රතිසාධනය කිරීම සඳහා ඝාතීය පසුපස නැවත සම්බන්ධ වීමේ තර්කය ක්රියාත්මක කරන්න.
නිර්දේශිත නැවත සම්බන්ධ වීමේ උපාය
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 });
කේත උදාහරණ
Python WebSocket සේවාදායකය
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 සංකෝචනය භාවිතා කරන්න: බෑන්ඩ්විඩ්ත් ඉතිරි කිරීම් සඳහා (20-40% අඩුවීම) ඔබේ WebSocket සේවාදායකයේ පණිවුඩ සංකෝචනය සක්රීය කරන්න.
සම්බන්ධතා සෞඛ්යය නිරීක්ෂණය කරන්න: පිංග්/පොංග් ප්රමාදය සහ ස්වයංක්රීය නැවත සම්බන්ධ වීම් නිරීක්ෂණය කරන්න ජාල ගැටළු නිර්ණය කිරීම සඳහා.
සම්බන්ධතාවය බිඳ වැටීමේදී පණිවුඩ බෆර් කරන්න: සම්බන්ධතාවය බිඳ වැටීමේදී, උපාය සංඥා පෝෂණය කර නැවත සම්බන්ධ වූ විට ඒවා ක්රියාත්මක කරන්න.
දැන්ම ප්රවාහය ආරම්භ කරන්න
ඔබගේ API යතුර ලබාගෙන තත්පර ක්රමවේද සමඟ තාත්වික වෙළඳ පද්ධති ගොඩනැගීම ආරම්භ කරන්න. WebSocket ප්රවාහය සියලුම තලවල් වලට ලබා ගත හැකිය.
API යතුර ලබා ගන්න
තත්පර ක්රමවේද වෙළඳ පද්ධති ගොඩනඟන්න
තත්පරයකට අඩු ප්රමාදයකින් තල්මසුන්ගේ ස්ථාන, අරමුදල් අනුපාත සහ AI තහවුරු කිරීමේ ලකුණු ප්රවාහ කරන්න.
සැලසුම් බලන්න