跳到主要内容

深度频道

描述

获取深度数据,books是全量深度频道,books1是1档频道,books5是5档频道,books15是15档频道;
默认推送频率:200ms
books1默认推送频率: 60ms

  • 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)深度频道成功后,首先获取初始全量深度数据,当获取到增量推送数据后,更新本地全量深度数据。

  1. 如果有相同价格,则比较数量;数量为0删除此深度,数量有变化则替换此数据。
  2. 如果没有相同价格,则按照价格优劣排序(bids为价格降序,asks为价格升序),将深度信息插入到全量数据中

计算校验和

先用深度合并后前25档bids和asks组成一个字符串(其中ask和bid中的价格和数量以冒号连接),再计算其crc32值(32位有符号整型)。

  1. 当bid和ask深度数据超过25档时,截取各自25档数据,要校验的字符串按照bid、ask深度数据交替方式连接。如:bid1[价格:数量]:ask1[价格:数量]:bid2[价格:数量]:ask2[价格:数量]...
  2. bid或ask深度数据不足25档时,直接忽略缺失的深度。如:bid1[价格:数量]:ask2[价格:数量]:ask3[价格:数量]:ask4[价格:数量]...
  3. 如果返回的价格为0.5000, 请注意使用原始值计算checksum,不要使用trim掉0后的0.5
请求示例
{
"op": "subscribe",
"args": [
{
"instType": "SPOT",
"channel": "books5",
"instId": "BTCUSDT"
}
]
}

请求参数

参数名参数类型是否必须描述
opString操作,subscribe unsubscribe
argsList<Object>请求订阅的频道列表
> instTypeString产品线类型
> channelString频道名: books/books1/books5/books15
> instIdString产品id 例如:ETHUSDT
订阅返回示例
{
"event": "subscribe",
"arg": {
"instType": "SPOT",
"channel": "books5",
"instId": "BTCUSDT"
}
}

返回参数

返回字段参数类型字段说明
eventString事件,subscribe unsubscribe error
argObject订阅的频道
> instTypeString产品类型
> channelString频道名: books/books1/books5/books15
> instIdString
产品id 例如:ETHUSDT
codeString错误码,错误时才会返回
msgString错误消息
推送返回示例
{
"action": "snapshot",
"arg": {
"instType": "SPOT",
"channel": "books5",
"instId": "BTCUSDT"
},
"data": [
{
"asks": [
[
"26274.9",
"0.0009"
],
[
"26275.0",
"0.0500"
]
],
"bids": [
[
"26274.8",
"0.0009"
],
[
"26274.7",
"0.0027"
]
],
"checksum": 0,
"ts": "1695710946294"
}
],
"ts": 1695710946294
}

推送数据参数

返回字段参数类型字段说明
argObject订阅成功的频道
> instTypeString产品类型
> channelString频道名: books/books1/books5/books15
> instIdString产品id 例如:ETHUSDT
actionString推送数据动作, snapshot or update
dataList<Object>订阅的数据
> instIdString产品id 例如:ETHUSDT
> asksList<String>卖方深度
> bidsList<String>买方深度
> tsString数据更新时间戳,Unix时间戳的毫秒数格式,如 1597026383085
> checksumLong检验和

您的阅读体验如何?