HQChart使用教程30-K线图如何对接第3方数据21-跨周期函数数据

什么是跨周期函数

通达信里面的说明是这样的

#后可用MIN1,MIN5,MIN15,MIN30,MIN60,DAY,WEEK,MONTH,SEASON,YEAR

例如:TMP1:=CLOSE#WEEK;
{非指标引用时只可用于OPEN,HIGH,LOW,CLOSE,VOL,AMOUNT,VOLINSTK等,当前周期不支持多秒线,多分钟线和多日线,并且引用周期必须要高于当前周期,5秒线只支持引用1分钟线和5分钟线,周期数据转换得到}

也是说你可以在当前周期下,引用其他周期的数据
HQChart也是支持跨周期函数

# 协议名称-跨周期数据

对应代码的类名和函数名: JSSymbolData::GetSymbolPeriodData

协议日志截图

在这里插入图片描述

Request 字段说明

field

需要的字段名字
symbol 股票代码 name 股票名称 第3个数据字段名称 C=CLOSE , O=OPEN …

period

周期名字 MIN1,MIN5,MIN15,MIN30,MIN60,DAY,WEEK,MONTH,SEASON,YEAR

symbol

请求的股票代码

返回json数据结构

日K周期

DAY,WEEK,MONTH,SEASON,YEAR数据 返回数据格式跟历史K线数据格式一样
HQChart使用教程30-K线图如何对接第3方数据2-日K数据

分钟K线周期

MIN1,MIN5,MIN15,MIN30,MIN60数据 返回格式跟历史分钟K线数据格式一样
HQChart使用教程30-K线图如何对接第3方数据3-1分钟K数据

示例代码片段

指标

var TestIndexScript = 
{
    Name:'测试自定义指标', Description:'自定义指标', IsMainIndex:true, //KLineType:-1,
    Args:[ { Name:'M1', Value:5}, { Name:'M2', Value:10 }, { Name:'M3', Value:20} ],
    //OutName:[ {Name:'MA1',DynamicName:"MA{M1}" },  {Name:'MA2',DynamicName:"MA{M2}" },{Name:'MA3',DynamicName:"MA{M3}" }],
    Script: //脚本
    'T1:C#WEEK;'+
    "T2:C;"
};
 this.NetworkFilter=function(data, callback)
{
    console.log('[NetworkFilter] data', data);
    switch(data.Name)
    {
      	..................
        case "JSSymbolData::GetSymbolPeriodData":                       //跨周期数据 (分钟K/日K)
            this.RequestPeriodData(data,callback);
            break;
    }
}

this.RequestPeriodData=function(data,callback)
{
    data.PreventDefault=true;
    var self=this;
    var symbol=data.Request.Data.symbol;    //股票代码
    var periodName=data.Request.Data.period;//周期名称
    var hqchart=data.Self;
    
    //周期名字对应后台API的周期数值
    const PERIOD_LIST=
    [
        {Name:'MIN1', Period:4},
        {Name:'MIN5', Period:5},
        {Name:'MIN15', Period:6},
        {Name:'MIN30', Period:7},
        {Name:'MIN60', Period:8},

        {Name:'DAY',    Period:0},
        {Name:'WEEK',   Period:1},
        {Name:'MONTH',  Period:2},
        {Name:"SEASON", Period:9},
        {Name:"YEAR",   Period:3}
    ];

    var periodID=-1;
    for(var i in PERIOD_LIST)
    {
        var item=PERIOD_LIST[i];
        if (item.Name==periodName)
        {
            periodID=item.Period;
            break;
        }
    }

    if (ChartData.IsMinutePeriod(periodID,true))    //分钟周期
    {
        var url='https://xxxxxxxx'
        $.ajax({
            url: url,
            data:
            {
                "field": ["name","symbol", "yclose","open","price","high","low","vol"],
                "symbol": symbol,
                "count": hqchart.MaxRequestMinuteDayCount,
                "period":periodID
            },
            type:"post",
            dataType: "json",
            async:true,
            success: (recvData)=>
            {
                self.RecvMinutePeriodData(recvData, data, callback);
            },
            error:(request)=>
            {
                
            }
    });
    }
    else if (ChartData.IsDayPeriod(periodID,true))  //日线周期
    {
        var url='xxxxxxxxxxxx'
        $.ajax({
            url: url,
            data:
            {
                "field": ["name","symbol", "yclose","open","price","high","low","vol"],
                "symbol": symbol,
                "count": hqchart.MaxReqeustDataCount,
                "period":periodID
            },
            type:"post",
            dataType: "json",
            async:true,
            success: (recvData)=>
            {
                self.RecvHistoryPeriodData(recvData, data, callback);
            },
            error:(request)=>
            {
                
            }
    });
    }
}

this.RecvMinutePeriodData=function(recvData, data, callback)
{
    var hqChartData={code:0, data:recvData.data};
    hqChartData.symbol=recvData.symbol;
    hqChartData.name=recvData.name;
    
    console.log("[KLineChart::RecvMinutePeriodData] hqChartData", hqChartData);
    callback(hqChartData);
}

this.RecvHistoryPeriodData=function(recvData, data, callback)
{
    var hqChartData={code:0, data:recvData.data};
    hqChartData.symbol=recvData.symbol;
    hqChartData.name=recvData.name;

    console.log("[KLineChart::RecvHistoryPeriodData] hqChartData", hqChartData);
    callback(hqChartData);
}

交流QQ群: 950092318

如果还有问题或新的需求可以加交流QQ群: 950092318

HQChart代码地址

地址:github.com/jones2000/HQChart

个人爱好(模型,摄影)

围城系列 - 擎天柱
在这里插入图片描述
在这里插入图片描述
领袖战争系类 - 骇翼,黑云
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HQChart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值