市場深度訂閱
資訊
- 此介面推送延遲為:200ms
市場深度訂閱
- 方法:
depth.subscribe
- 參數:
參數名 | 是否必須 | 類型 | 說明 |
---|---|---|---|
market_list[n][0] | true | string | market,市場名稱 |
market_list[n][1] | true | int | limit,推送深度條數,[5, 10, 20, 50]中的其中一個 |
market_list[n][2] | true | string | interval,合併粒度,["0", "0.00000000001", "0.000000000001", "0.0000000001", "0.000000001", "0.00000001", "0.00000001", "0.00000001",010" 001", "0.001", "0.01", "0.1", "1", "10", "100", "1000"]中的一個 |
market_list[n][3] | true | bool | if_full,是否為全量訂閱 |
- 訂閱範例
{
"method": "depth.subscribe",
"params": {"market_list": [
["BTCUSDT", 10, "0", true],
["ETHUSDT", 10, "0", false]
]
},
"id": 1
}
深度推播
- 方法:
depth.update
- 參數:
參數名 | 類型 | 說明 |
---|---|---|
market | string | 市場名 |
is_full | bool | true為全量推送,false為增量推送 |
depth | object | 深層數據 |
depth.asks | array | 賣方數據 |
asks[n][0] | string | 賣方價格 |
asks[n][1] | string | 賣方數量,在增量推送時,該值為0表示需要刪除該價格的深度 |
depth.bids | array | 買方數據 |
bids[n][0] | string | 買方價格 |
bids[n][1] | string | 買方數量,在增量推送時,該值為0表示需要刪除該價格的深度 |
depth.last | string | 最新價格 |
depth.updated_at | int | 時間戳,毫秒 |
depth.checksum | string | 資料校驗和 |
提示
關於增量與全量深度推播:
- 增量推送:每次推送上個推送時點到目前時點更新的深度資料。每200毫秒推送一次,若無深度更新,則不推送。
- 全量推送:每次推送完整的深度資料。每200毫秒推送一次,若無深度更新,則不推送。
- 如果訂閱了多個市場,透過market參數來區分不同市場的推播訊息。
- 市場深度每隔1分鐘推送一次全量資料。
關於深度校驗和(checksum):
- checksum 校驗和是全深度資料的有符號的32位元整數,用於驗證深度資料的正確性。
- 構造校驗和字串:bid1_price:bid1_amount:bid2_price:bid2_amount:ask1_price:ask1_amout:…(如果沒有出價,則校驗和字串是ask1_price:ask1_amount:ask2_price:ask2_amount:…)
- 將校驗和字串使用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_list | true | []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
}