跳到主要內容

市場深度訂閱

資訊
  • 此介面推送延遲為:200ms

市場深度訂閱

  • 方法: depth.subscribe
  • 參數:
參數名是否必須類型說明
market_list[n][0]truestringmarket,市場名稱
market_list[n][1]trueintlimit,推送深度條數, [5, 10, 20, 50]中的其中一個
market_list[n][2]truestringinterval,合併粒度,["0", "0.00000000001", "0.000000000001", "0.0000000001", "0.00000000000001", "0.000000001", "0.0000000.0", "0.00000001 0001", "0.001", "0.01", "0.1", "1", "10", "100", "1000"]中的一個
market_list[n][3]trueboolif_full,是否為全量訂閱
  • 訂閱範例
{
"method": "depth.subscribe",
"params": {
"market_list": [
["BTCUSDT", 10, "0", true],
["ETHUSDT", 10, "0", false]
]
},
"id": 1
}

深度推播

  • 方法: depth.update
  • 參數:
參數名類型說明
marketstring市場名
is_fullbooltrue為全量推送,false為增量推送
depthobject深層數據
depth.asksarray賣方數據
asks[n][0]string賣方價格
asks[n][1]string賣方數量,在增量推送時,該值為0表示需要刪除該價格的深度
depth.bidsarray買方數據
bids[n][0]string買方價格
bids[n][1]string買方數量,在增量推送時,該值為0表示需要刪除該價格的深度
depth.laststring最新價格
depth.updated_atint時間戳(毫秒)
depth.checksumstring資料校驗和
提示

關於增量與全量深度推播:

  1. 增量推送:每次推送上個推送時點到目前時點更新的深度資料。每200毫秒推送一次,若無深度更新,則不推送。
  2. 全量推送:每次推送完整的深度資料。每200毫秒推送一次,若無深度更新,則不推送。
  3. 如果訂閱了多個市場,透過market參數來區分不同市場的推播訊息。
  4. 市場深度每隔1分鐘推送一次全量資料。

關於深度校驗和(checksum):

  1. checksum 校驗和是全深度資料的有符號的32位元整數,用於驗證深度資料的正確性。
  2. 構造校驗和字串:bid1_price:bid1_amount:bid2_price:bid2_amount:ask1_price:ask1_amout:…(如果沒有出價,則校驗和字串是ask1_price:ask1_amount:ask2_price:ask2_amount:…)
  3. 將校驗和字串使用crc32演算法編碼

如何結合全量及增量推送在api客戶端恢復完整深度資料及進行深度資料校驗,請參考程式碼範例

  • 推送範例
{
"method": "depth.update",
"data": {
"market": "BTCUSDT",
"is_full": true,
"depth": {
"asks": [
[
"30740.00",
"0.31763545"
],
[
"30769.00",
"1.45155000"
]
],
"bids": [
[
"30736.00",
"0.04857373"
],
[
"30733.00",
"0.84696320"
],
[
"30725.00",
"0.12563353"
],
[
"30422.00",
"0"
]
],
"last": "30746.28",
"updated_at": 1689152421692,
"checksum": 2578768879
}
},
"id": null
}

取消市場深度訂閱

  • 方法: depth.unsubscribe
  • 參數:
參數名是否必須類型說明
market_listtrue[]string市場名列表,如果為空列表則全部取消訂閱
  • 取消訂閱範例:

// unsubscribe單一市場的深度訂閱
{
"method": "depth.unsubscribe",
"params": {"market_list": ["BTCUSDT"]},
"id": 1
}

// unsubscribe多個市場的深度訂閱
{
"method": "depth.unsubscribe",
"params": {"market_list": ["BTCUSDT", "ETHUSDT"]},
"id": 1
}

// unsubscribe所有市場的深度訂閱
{
"method": "depth.unsubscribe",
"params": {"market_list": []},
"id": 1
}