图表数据(K线数据及历史tick数据)¶
请求订阅图表数据¶
终端通过发送 set_chart 包实现订阅图表数据
{
"aid": "set_chart", // 必填, 请求图表数据
"chart_id": "abcd123", // 必填, 图表id, 服务器只会维护每个id收到的最后一个请求的数据
"ins_list": "SHFE.cu1701", // 必填, 填空表示删除该图表,多个合约以逗号分割,第一个合约是主合约,所有id都是以主合约为准
"duration": 180000000000, // 必填, 周期,单位ns, tick:0, 日线: 3600 * 24 * 1000 * 1000 * 1000
"view_width": 500, // 必填, 图表宽度, 请求最新N个数据,并保持滚动(新K线生成会移动图表)
}
需要注意几点:
- chart_id 为一个任意字符串,当多次发送的set_chart包中的chart_id重复时,后一次的请求将覆盖前一次。chart_id不相同则视为不同的订阅
- 历史数据服务是订阅式而非查询式的。只要发送过一次 set_chart 请求,每当行情变化时,都会通过 rtn_data 包推送新的K线,不需要多次发送 set_chart 包
图表数据同步¶
图表数据通过 rtn_data 包的 klines 字段和 ticks 字段进行差分发送, 如下所示:
{
"aid": "rtn_data", //数据推送
"data": [ //diff数据数组, 一次推送中可能含有多个数据包
{
"klines": { //K线数据
"SHFE.cu1601": { //合约代码
180000000000: { //K线周期, 单位为纳秒, 180000000000纳秒 = 3分钟
"last_id": 3435, //整个序列最后一个记录的序号
"data": {
3384: {
"datetime": 192837400000000, //UnixNano 北京时间,如果是日线,则是交易日的 UnixNano
"open": 3432.33, //开
"high": 3432.33, //高
"low": 3432.33, //低
"close": 3432.33, //收
"volume": 2, //成交量
"open_oi": 1632, //起始持仓量
"close_oi": 1621, //结束持仓量
},
3385: {
...
},
...
},
"binding": {
"SHFE.cu1709": {
3384: 2900, //本合约K线所对应的另一个合约的K线号
3385: 2950,
...
}
}
},
...
},
...
},
"ticks": {
"SHFE.cu1601": {
"last_id": 3550, //整个序列最后一个元素的编号
"data": {
3384: {
"datetime": 1928374000000000, //UnixNano 北京时间
"last_price": 3432.33, //最新价
"average": 3420.11, //当日均价
"highest": 3452.33, //最高价
"lowest": 3402.33, //最低价
"bid_price1": 3432.2, //买一价
"ask_price1": 3432.4, //卖一价
"bid_volume1": 1, //买一量
"ask_volume1": 2, //卖一量
"volume": 200, //成交量
"amount": 120023, //成交额
"open_interest": 1621, //持仓量
},
3385: {
...
},
...
}
},
...
},
]
}
}