图表数据(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: {
              ...
            },
            ...
          }
        },
        ...
      },
    ]
  }
}