深度频道
描述
获取深度数据books
,books5
,books15
默认推送频率:150msbooks1
默认推送频率:100ms
books
对应全量深度数据,首次推送全量数据:snapshot
,后续推送增量变化数据:update
books1
对应1档位深度数据,每次推送:snapshot
books5
对应5档位深度数据,每次推送:snapshot
books15
对应15档位深度数据,每次推送:snapshot
Checksum机制
1.bid和ask超过25档
合并后全量深度数据(在此仅展示2档数据,实际应截取25档数据):
"bids": [
[ 3366.1, 7 ], //bid1
[ 3366 , 6]
]
"asks": [
[ 3366.8, 9], //ask1
[ 3368 , 8]
]
校验字符串:
"3366.1:7:3366.8:9:3366:6:3368:8"
2.bid或ask不足25档
合并后全量深度数据:
"bids": [
[ 3366.1, 7]
]
"asks": [
[ 3366.8, 9],
[ 3368 , 8 ],
[ 3372 , 8 ]
]
校验字符串:
"3366.1:7:3366.8:9:3368:8:3372:8"
此机制可以帮助用户校验深度数据的准确性。
深度合并
用户订阅增量推送(如:books
)深度频道成功后,首先获取初始全量深度数据,当获取到增量推送数据后,更新本地全量深度数据。
- 如果有相同价格,则比较数量;数量为0删除此深度,数量有变化则替换此数据。
- 如果没有相同价格,则按照价格优劣排序(bids为价格降序,asks为价格升序),将深度信息插入到全量数据中
计算校验和
先用深度合并后前25档bids和asks组成一个字符串(其中ask和bid中的价格和数量以冒号连接),再计算其crc32值(32位有符号整型)。
- 当bid和ask深度数据超过25档时,截取各自25档数据,要校验的字符串按照bid、ask深度数据交替方式连接。如:bid1[价格:数量]:ask1[价格:数量]:bid2[价格:数量]:ask2[价格:数量]...
- bid或ask深度数据不足25档时,直接忽略缺失的深度。如:bid1[价格:数量]:ask2[价格:数量]:ask3[价格:数量]:ask4[价格:数量]...
- 如果返回的价格为0.5000, 请注意使用原始值计算checksum,不要使用trim掉0后的0.5
请求示例
{
"op": "subscribe",
"args": [
{
"instType": "USDT-FUTURES",
"channel": "books5",
"instId": "BTCUSDT"
}
]
}
请求参数
参数名 | 参数类型 | 是否必须 | 描述 |
---|---|---|---|
op | String | 是 | 操作, subscribe unsubscribe |
args | List<Object> | 是 | 请求订阅的频道列表 |
> instType | String | 是 | 产品类型USDT-FUTURES USDT专业合约COIN-FUTURES 混合合约USDC-FUTURES USDC专业合约SUSDT-FUTURES USDT专业合约模拟盘SCOIN-FUTURES 混合合约模拟盘SUSDC-FUTURES USDC专业合约模拟盘 |
> channel | String | 是 | 频道名: books/books1/books5/books15 |
> instId | String | 是 | 产品ID |
订阅返回示例
{
"event": "subscribe",
"arg": {
"instType": "USDT-FUTURES",
"channel": "books5",
"instId": "BTCUSDT"
}
}
返回参数
返回字段 | 参数类型 | 字段说明 |
---|---|---|
event | String | 事件 |
arg | Object | 订阅的频道 |
> instType | String | 产品类型USDT-FUTURES USDT专业合约COIN-FUTURES 混合合约USDC-FUTURES USDC专业合约SUSDT-FUTURES USDT专业合约模拟盘SCOIN-FUTURES 混合合约模拟盘SUSDC-FUTURES USDC专业合约模拟盘 |
> channel | String | 频道名: books/books1/books5/books15 |
> instId | String | 产品ID |
msg | String | 错误消息 |
code | String | 错误码 |
推送返回示例
{
"action": "snapshot",
"arg": {
"instType": "USDT-FUTURES",
"channel": "books5",
"instId": "BTCUSDT"
},
"data": [
{
"asks": [
[
"27002.0",
"5.070"
],
[
"27002.5",
"1.470"
]
],
"bids": [
[
"26998.5",
"6.620"
],
[
"26998.0",
"7.510"
]
],
"checksum": 0,
"ts": 1695716059516
}
],
"ts": "1695716059516"
}
推送数据参数
返回字段 | 参数类型 | 字段说明 |
---|---|---|
arg | Object | 订阅成功的频道 |
> instType | String | 产品类型USDT-FUTURES USDT专业合约COIN-FUTURES 混合合约USDC-FUTURES USDC专业合约SUSDT-FUTURES USDT专业合约模拟盘SCOIN-FUTURES 混合合约模拟盘SUSDC-FUTURES USDC专业合约模拟盘 |
> channel | String | 频道名: books/books1/books5/books15 |
> instId | String | 产品ID |
action | String | 推送数据动作, 增量推送数据还是全量推送数据 |
data | List<Object> | 订阅的数据 |
> asks | List<String> | 卖方深度 |
> bids | List<String> | 买方深度 |
> ts | String | 撮合引擎时间戳,Unix时间戳的毫秒数格式,如 1597026383085 |
> checksum | Long | 检验和 |