Skip to content

5. 第3方数据对接

jones edited this page Jan 10, 2022 · 12 revisions

数据替换接口

所有HQChart内部请求的数据,都可以通过NetworkFilter回调函数截获,在回调里面可以阻止当次内部请求,替换成自己的数据. 在Option配置里面设置 NetworkFilter:function(data, callback) { } 这样每次数据请求时都会调用这个回调。

NetworkFilter回调说明

data 请求数据内容

{
 Name:原始的类名::函数名
 Explain: 说明
 Request: 原始的请求信息
 Request.Type 请求类型
 Request.Data 请求参数
 Request.Url 请求地址
 PreventDefault 是否阻止默认网路协议发送, 默认false, 如果设置成true, HQChart就不会再请求数据。
 ....... 以上是主要的字段, 其他的自己打印看下
}

callback

数据设置到hqchart接口

回调函数样例

function NetworkFilter(data, callback)	//网络协议回调
{
    console.log('[NetworkFilter] data', data);
    data.PreventDefault=true;	//设置hqchart不请求数据
    switch(data.Name)
    {
     	case 'KLineChartContainer::ReqeustHistoryMinuteData':           //分钟全量数据下载
     	    //通过data.Request里的数据 对应到第3方数据
			$.ajax({
		        url:'第3方数据地址'
		        .....
		        success: function (data)
		        {
		           var hqchartData;//把第3方数据data转成 hqchart数据
		           callback(hqchartData); //把数据传回hqchart
		        }
		    });
     		break;
     	case 'KLineChartContainer::RequestMinuteRealtimeData':          //分钟增量数据更新
     	    ............同上
     	    break;
     	case 'KLineChartContainer::RequestHistoryData':                 //日线全量数据下载
     	    ............同上
     	    break;
     	case 'KLineChartContainer::RequestRealtimeData':                //日线实时数据更新
     	    .............同上
     	    break;
        ..................... //其他数据
	}
}

小程序,及第3放app平台对接注意事项

小程序, uniapp 网络接口都是自己封装的, 真实的网络数据都在里面的data中, 传递给hqchart的时候也需要包一层

var hqChartData={code:0, data:[]};
hqChartData.symbol='BTCUSDT.BIT';
hqChartData.name='BTCUSDT';
.......
callback({data:hqChartData});

基础K线数据对接

全量日K数据

协议名称

KLineChartContainer::RequestHistoryData

股票名称

data.Request.Data.symbol; //请求的股票代码

周期

data.Self.Period; //周期

复权

data.Self.Right; //复权

返回数据

{
   code:0, //返回状态0表示正常
   date:  //K线数据 数据, 一天一个数组
   [
      [ date(日期) = 0, 
        yclose(前收盘价) = 1, 
        open(开盘价) = 2, 
        high(最高) = 3, 
        low (最低)= 4, 
        close(收盘价) = 5, 
        vol(成交量) = 6, 
        amount(成交金额) = 7
        8=持仓量(期货才有),(可选)
        9=结算价 (可选)
        10=前结算价 (可选)
        11=前复权因子 (可选)
        12=后复权因子 (可选)
      ],
      .............
   ]
   
}

注意事项

  • 日期格式 date=yyyymmdd 是数值型的。 所有的数据都是数值类型,不是字符串!!
  • 0-5的数据必须要有, 后面的字段如果没有数据就填null
  • 如果是A股,成交量单位是股**
  • 复权因子,如果不使用复权因子算复权可以不填

全量分钟K线数据

协议名称

KLineChartContainer::ReqeustHistoryMinuteData

股票名称

data.Request.Data.symbol; //请求的股票代码

周期

data.Self.Period; //周期

复权

data.Self.Right; //复权

返回数据

{
   code:0, //返回状态0表示正常
   date:  //K线数据 数据, 一个周期一个数组
   [
      [ 0=日期  格式YYYYMMDD 如20190229 => 2019-02-29
        1=前收盘
        2=开盘价
        3=最高
        4= 最低
        5=收盘
        6=成交量
        7=成交金额
        8=时间格式 hhmm
        9=持仓量 (期货才用到)(可选)
      ],
      .............
   ]
   
}

注意事项

  • 数据类型都是数值型的, 不是字符串的
  • 时间格式
  1. 分钟周期的如5分钟, 2小时, 4小时等周期的使用格式 hhmm 如(925=>9:25)
  2. 秒周期的如5秒, 10秒等周期的使用格式 hhmmss 如 123106=>12:31:06

增量日线数据

协议名称

KLineChartContainer::RequestRealtimeData

股票名称

data.Request.Data.symbol[0]; //请求的股票代码

周期

data.Self.Period; //周期

复权

data.Self.Right; //复权

返回数据

{
  "stock": [
    {
      "time": 150003,  时间格式hhmmss 150003=>15:00:03
      "date": 20191011, 日期 YYYYMMDD 20191011=> 2019-10-11
      "price": 16.81, 收盘价
      "open": 16.2, 开盘价
      "yclose": 16.24, 昨收价
      "high": 16.95, 最高价
      "low": 16.2, 最低价
      "vol": 140542282, 成交量
      "amount": 2335030599, 成交金额
      "symbol": "000001.sz", 股票代码
      "name": "平安银行" 股票名称

      "position": 持仓量(期货才有)(可选)
      "bfactor": 前复权因子(可选)
      "afactor": 后复权因子(可选)
    }
  ],
  "code": 0 //返回状态0表示正常
}

增量分钟K线数据

协议名称

KLineChartContainer::RequestMinuteRealtimeData

股票名称

data.Request.Data.symbol[0]; //请求的股票代码

周期

data.Self.Period; //周期

复权

data.Self.Right; //复权

返回数据

{
  code:0  //返回状态0表示正常
  ver:2.0 //数据版本号, 必填
  symbol:股票代码
  name:  股票名称
  data: 最新的分钟K线数据
  [
    [
      0=日期 格式YYYYMMDD 如20190229=> 2019-02-29
      1=前收盘
      2=开盘价
      3=最高
      4=最低
      5=收盘
      6=成交量
      7=成交金额
      8=时间格式 hhmm (925=>9:25) 如果是秒数据格式 hhmmss  123106=>12:31:06
      9=持仓量(期货才有)(可选)
    ],
    ..........
  ]
}

财务类数据对接

流通股本数据

用来计算换手率,流通市值等很股本市值有关的数据,取的历史所有的流通A股的股本. 只有A股和港股会下载这个数据

协议名称

KLineChartContainer::RequestFlowCapitalData

股票名称

data.Request.Data.symbol[0]; //请求的股票代码

返回数据

{
  "code":0, //返回状态0表示正常
  "stock": [
    {
      "stockday": 
      [
        {
          "date": 20140108, //日期
          "capital": 
          {
            "a": 5575901875.0 //流通股本
          }
        },
      .........
      ]
}        

数字货币下载流通股

var option= 
 {
      Type:'历史K线图',   //创建图形类型
      ........
      EnableFlowCapital:
      {
          BIT:true,  //强制下载数字货币流通股
      },
 }

忽略流通股本

如果不需要流通股本,直接截获这个事件,然后返回空数据

this.NetworkFilter=function(data, callback)
{
    console.log('[NetworkFilter] data', data);
    switch(data.Name)
    {
        .......
        case 'KLineChartContainer::RequestFlowCapitalData':             //流通股本
            this.RequestFlowCapitalData(data,callback);
            break;
    }
}

//流通股本
this.RequestFlowCapitalData=function(data,callback)
{
     data.PreventDefault=true;
     var hqChartData={code:0, stock:[]}; //如果没有数据就填空
     callback(hqChartData);
}

FINANCE函数数据

通达信脚本函数,财务数据函数

FINANCE(1) 总股本(随时间可能有变化)
FINANCE(2) 用法同SETCODE
FINANCE(7) 流通股本(随时间可能有变化)
FINANCE(8) 股东人数(户)(上市公司的最新数据)
FINANCE(9) 资产负债率
......

协议名称

JSSymbolData::GetFinance

股票名称

data.Request.Data.symbol; //请求的股票代码

财务指标ID

data.Request.Data.id;

K线数据日期范围

data.Request.Data.daterange

返回数据

  1. 单数值json数据
{
  Date:日期, //数值型 格式YYYYMMDD 20201230=> 2020-12-20
  Value:数值
}
  1. 时间序列json数据
[
     { Date: 日期1, Value:数值},
     { Date: 日期2, Value:数值},
     { Date: 日期3, Value:数值},
     ..........
]

//注意: Date: 数值型 格式YYYYMMDD 20201230=> 2020-12-20

FINVALUE函数数据

通达信脚本函数,
引用专业财务数据. FINVALUE(ID),ID为数据编号

数据编号如下:
0–返回报告期(YYMMDD格式),150930表示为2015年第三季
说明:
1.所有指标没有标注单位的都是个位,如资金项单位都是元,股本单位都是股。
2.所有的空值数据显示为0,以方便客户加减运算,非金融类指标在指标名称后有标注。

-------------每股指标-----------------------------
1–基本每股收益
2–扣除非经常性损益每股收益
3–每股未分配利润
4–每股净资产
5–每股资本公积金
6–净资产收益率
7–每股经营现金流量
-------------资产负债表----------------------------
8.–货币资金
9.–交易性金融资产
10.–应收票据
11.–应收账款
12.–预付款项
13.–其他应收款
14.–应收关联公司款

协议名称

JSSymbolData::GetFinValue

股票名称

data.Request.Data.symbol; //请求的股票代码

专业财务数据指标ID

data.Request.Data.id;

K线数据日期范围

data.Request.Data.daterange

返回数据

[
     { Date: 日期1, Value:数值},
     { Date: 日期2, Value:数值},
     { Date: 日期3, Value:数值},
     ..........
]

//注意: Date: 数值型 格式YYYYMMDD 20201230=> 2020-12-20

获取指定品种的K线数据

通达信语法$

例如:"000014$CLOSE", 表示取000014的收盘价, 注意加入双引号. 可在前面加SZ (深市) , SH (沪市 ) , 或市场 , "SZ000001$CLOSE",表示取000014的收盘价

hqchart内置函数

C(“品种代码”) -> 收盘价
O(“品种代码”) -> 开盘价
H(“品种代码”) -> 最高价
L(“品种代码”) -> 最低价
VOL(“品种代码”) -> 成交量
AMO(“品种代码”) -> 成交金额

例子

收:C("600000.SH"), NODRAW;
开:O("600000.SH"), NODRAW;;
低:L("600000.SH"), NODRAW;;
高:H("600000.SH"), NODRAW;

DRAWKLINE(,,,), COLORYELLOW;

//等价于

收:"600000$C", NODRAW;
开:"600000$O", NODRAW;;
低:"600000$L", NODRAW;;
高:"600000$H", NODRAW;

DRAWKLINE(,,,), COLORYELLOW;

协议名称

JSSymbolData::GetOtherSymbolData

股票名称

data.Request.Data.symbol; //请求的股票代码

周期

Request.Data.period

复权

Request.Data.right

K线数据日期范围

data.Request.Data.dateRange

返回json数据结构

日K数据结构和全量日K数据格式一样
分钟K线结构和全量分钟K线数据格式一样
注意:对应的周期需要外部自己算好,hqchart内部不会计算, 如当前主图是周线,那你最后给hqchart的数据应该是周线数据。