-
Notifications
You must be signed in to change notification settings - Fork 754
5. 第3方数据对接
所有HQChart内部请求的数据,都可以通过NetworkFilter回调函数截获,在回调里面可以阻止当次内部请求,替换成自己的数据. 在Option配置里面设置 NetworkFilter:function(data, callback) { } 这样每次数据请求时都会调用这个回调。
{
Name:原始的类名::函数名
Explain: 说明
Request: 原始的请求信息
Request.Type 请求类型
Request.Data 请求参数
Request.Url 请求地址
PreventDefault 是否阻止默认网路协议发送, 默认false, 如果设置成true, HQChart就不会再请求数据。
....... 以上是主要的字段, 其他的自己打印看下
}
数据设置到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;
..................... //其他数据
}
}
小程序, uniapp 网络接口都是自己封装的, 真实的网络数据都在里面的data中, 传递给hqchart的时候也需要包一层
var hqChartData={code:0, data:[]};
hqChartData.symbol='BTCUSDT.BIT';
hqChartData.name='BTCUSDT';
.......
callback({data:hqChartData});
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股,成交量单位是股**
- 复权因子,如果不使用复权因子算复权可以不填
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=持仓量 (期货才用到)(可选)
],
.............
]
}
- 数据类型都是数值型的, 不是字符串的
- 时间格式
- 分钟周期的如5分钟, 2小时, 4小时等周期的使用格式 hhmm 如(925=>9:25)
- 秒周期的如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表示正常
}
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(1) 总股本(随时间可能有变化)
FINANCE(2) 用法同SETCODE
FINANCE(7) 流通股本(随时间可能有变化)
FINANCE(8) 股东人数(户)(上市公司的最新数据)
FINANCE(9) 资产负债率
......
JSSymbolData::GetFinance
data.Request.Data.symbol; //请求的股票代码
data.Request.Data.id;
data.Request.Data.daterange
- 单数值json数据
{
Date:日期, //数值型 格式YYYYMMDD 20201230=> 2020-12-20
Value:数值
}
- 时间序列json数据
[
{ Date: 日期1, Value:数值},
{ Date: 日期2, Value:数值},
{ Date: 日期3, Value:数值},
..........
]
//注意: Date: 数值型 格式YYYYMMDD 20201230=> 2020-12-20
通达信脚本函数,
引用专业财务数据. 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; //请求的股票代码
data.Request.Data.id;
data.Request.Data.daterange
[
{ Date: 日期1, Value:数值},
{ Date: 日期2, Value:数值},
{ Date: 日期3, Value:数值},
..........
]
//注意: Date: 数值型 格式YYYYMMDD 20201230=> 2020-12-20
例如:"000014$CLOSE", 表示取000014的收盘价, 注意加入双引号. 可在前面加SZ (深市) , SH (沪市 ) , 或市场 , "SZ000001$CLOSE",表示取000014的收盘价
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
data.Request.Data.dateRange
日K数据结构和全量日K数据格式一样
分钟K线结构和全量分钟K线数据格式一样
注意:对应的周期需要外部自己算好,hqchart内部不会计算, 如当前主图是周线,那你最后给hqchart的数据应该是周线数据。