市场深度订阅
信息
- 该接口推送延迟为: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.0000001", "0.000001", "0.00001", "0.0001", "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
}