.. _mdhis: 图表数据(K线数据及历史tick数据) ================================================== 请求订阅图表数据 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 终端通过发送 set_chart 包实现订阅图表数据 .. code-block:: javascript { "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 字段进行差分发送, 如下所示: .. code-block:: javascript { "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: { ... }, ... } }, ... }, ] } }