RPI深度
RPI深度
描述
获取RPI(零售价格优化)深度数据,rpi-books是全量深度频道,rpi-books1是1档频道,rpi-books5是5档频道,rpi-books50是50档频道;
rpi-books对应全量深度数据,首次推送全量数据snapshot,后续推送增量变化数据:updaterpi-books1对应1档位深度数据,每次推送:snapshotrpi-books5对应5档位深度数据,每次推送:snapshotrpi-books50对应50档位深度数据,每次推送:snapshot
rpi-books1推送频率:10msrpi-books5推送频率:100msrpi-books50推送频率:100msrpi-books推送频率:100ms
checksum校验
先用深度合并后前25档bids和asks组成一个字符串(其中ask和bid中的价格、非RPI数量和RPI数量以冒号连接),再计算其crc32值(32位有符号整型)。
- 当bid和ask深度数据超过25档时,截取各自25档数据,要校验的字符串按照bid、ask深度数据交替方式连接。如:bid1[价格:非RPI数量:RPI数量]:ask1[价格:非RPI数量:RPI数量]:bid2[价格:非RPI数量:RPI数量]:ask2[价格:非RPI数量:RPI数量]...
- bid或ask深度数据不足25档时,直接忽略缺失的深度。如:bid1[价格:非RPI数量:RPI数量]:ask2[价格:非RPI数量:RPI数量]:ask3[价格:非RPI数量:RPI数量]:ask4[价格:非RPI数量:RPI数量]...
- ask和bid中某一价格对应的数量需包含非RPI数量和RPI数量
- 如果返回的价格为0.5000, 请注意使用原始值计算checksum,不要使用trim掉0后的0.5
示例:
合并后全量深度数据(在此仅展示2档数据,实际应截取25档数据):
"a": [["3366.8", "9", "1"], ["3368", "8", "2"]],
"b": [["3366.1", "7", "1"], ["3366", "6", "1"]]
校验字符串:3366.1:7:1:3366.8:9:1:3366:6:1:3368:8:2
seq机制
- 普通orderbook 及RPI orderbook的seq为两套独立规则,均单独计算
请求示例
{
"op": "subscribe",
"args": [
{
"instType": "usdt-futures",
"topic": "rpi-books5",
"symbol": "BTCUSDT"
}
]
}
请求参数
| 参数名 | 参数类型 | 是否必须 | 描述 |
|---|---|---|---|
| op | String | 是 | 操作subscribe 订阅 unsubscribe 退订 |
| args | List<Object> | 是 | 请求订阅的频道列表 |
| > instType | String | 是 | 产品线类型spot 现货交易usdt-futures USDT合约coin-futures 币本位合约usdc-futures USDC合约 |
| > topic | String | 是 | 频道名rpi-books全部档位频道 rpi-books1一档频道 rpi-books5五档频道 rpi-books50五十档频道 |
| > symbol | String | 是 | 交易对名称 例如 BTCUSDT |
订阅返回示例
{
"event": "subscribe",
"arg": {
"instType": "usdt-futures",
"topic": "rpi-books5",
"symbol": "BTCUSDT"
}
}
返回参数
| 返回字段 | 参数类型 | 字段说明 |
|---|---|---|
| event | String | 事件 |
| arg | Object | 订阅的频道 |
| > instType | String | 产品线类型spot 现货交易usdt-futures USDT合约coin-futures 币本位合约usdc-futures USDC合约 |
| > topic | String | 频道名 |
| > symbol | String | 交易对名称 |
| code | String | 错误码 |
| msg | String | 错误消息 |
推送返回示例
{
"data": [
{
"a": [
[
"3366.8",
"9",
"1"
],
[
"3367",
"0",
"1"
],
[
"3368",
"8",
"2"
]
],
"b": [
[
"3366.1",
"7",
"1"
],
[
"3366",
"6",
"1"
]
],
"checksum": 0,
"pseq": 0,
"seq": 1304314508780744705,
"ts": "1730969017964"
}
],
"arg": {
"instType": "usdt-futures",
"symbol": "BTCUSDT",
"topic": "rpi-books5"
},
"action": "snapshot",
"ts": 1730969017965
}
推送数据参数
| 返回字段 | 参数类型 | 字段说明 |
|---|---|---|
| arg | Object | 订阅成功的频道 |
| > instType | String | 产品线类型spot 现货交易usdt-futures USDT合约coin-futures 币本位合约usdc-futures USDC合约 |
| > topic | String | 频道名 |
| > symbol | String | 交易对名称 |
| action | String | 推送数据动作snapshot全量 update 增量 |
| ts | String | 数据推送时间戳 |
| data | List<Object> | 订阅的数据 |
| > a | List<String> | 卖方深度 |
| > > a[0] | String | 卖方价格 |
| > > a[1] | String | 卖方非RPI数量 |
| > > a[2] | String | 卖方RPI数量 |
| > b | List<String> | 买方深度 |
| > > b[0] | String | 买方价格 |
| > > b[1] | String | 买方非RPI数量 |
| > > b[2] | String | 买方RPI数量 |
| > > checksum | String | 校验和 用于校验数据准确性 |
| > > seq | String | 序列号 订单簿更新时递增,可以用来判断是否乱序 |
| > > pseq | String | 上次推送序列号,可以用来判断是否丢包,只有rpi-books频道有值 |
| > > ts | String | 撮合时间戳 |