HQChart使用教程46-分钟周期数据计算外部接口

151 篇文章 33 订阅

HQChart使用教程46-分钟周期数据计算外部接口

需求

分钟数据周期,有时候根据不同的场景需要定制算法, HQChart开放了一个分钟周期计算的接口, 如果需要定制分钟周期计算,可以实现这个接口, 就可以使用外部的分钟周期计算函数了。

分钟周期计算接口

重写这个函数就可以 覆盖HQChart的周期计算函数, 从而调用外部的这个函数

DataPlus.GetMinutePeriodData=function(period,data,self)
{
  .... 周期计算
}

参数说明
period 周期
data 原始的 1分钟或日K现数
self 数据类实例

返回:
HistoryData类 数组

样例代码

//定义外部计算周期函数 替换掉内部的
DataPlus.GetMinutePeriodData=function(period,data,self)
{
    console.log('[GetMinutePeriodData] symbol= ', self.Symbol);
    var result = [];
    var startIndex=0;	//开始合并的起始位置,根据周期不一样需要调整
    var periodDataCount = 5;
    var firstDateTime=data[0].Time;
    if (period == 5) 
    {
        periodDataCount = 5;
        for(startIndex=0;startIndex<data.length;++startIndex)
        {
            var item=data[startIndex];
            var time=item.Time; 
            //1, 16, 21, 26, 31,36, 41, 46, 51, 56
            if (time%10==6 || time%10==1) break;
        }
    }
    else if (period == 6) 
    {
        periodDataCount = 15;
        for(startIndex=0;startIndex<data.length;++startIndex)
        {
            var item=data[startIndex];
            var time=item.Time; 
            var m1=parseInt(time/10);
            var m2=time%10;
            //1, 16, 31, 46 
            if ( (m2==6 && (m1==1 || m1==4))  || (m2==1 && (m1==0|| m1==3)) ) 
                break;
        }
    }
    else if (period == 7) 
    {
        periodDataCount = 30;
        for(startIndex=0;startIndex<data.length;++startIndex)
        {
            var item=data[startIndex];
            var time=item.Time; 
            var m1=parseInt(time/10);
            var m2=time%10;
            //16, 46 ,1
            if ( time==16 || time==46 || time==1 ) 
                break;
        }
    }
    else if (period == 8) 
    {
        periodDataCount = 60;
        for(startIndex=0;startIndex<data.length;++startIndex)
        {
            var item=data[startIndex];
            var time=item.Time; 
            var m1=parseInt(time/10);
            var m2=time%10;
            //16
            if ( time==16) 
                break;
        }
    }

    var bFirstPeriodData = false;
    var newData = null;
    var preTime=null;   //上一次的计算时间
    for (var i = startIndex; i < data.length; )
    {
        bFirstPeriodData = true;
        for (var j = 0; j < periodDataCount && i < data.length; ++i)
        {
            if (bFirstPeriodData)
            {
                newData = new HistoryData();
                result.push(newData);
                bFirstPeriodData = false;
            }
            var minData = data[i];
            if (minData == null)
            {
                ++j;
                continue;    
            } 
            else
                ++j;
            newData.Date = minData.Date;
            newData.Time = minData.Time;
            preTime=newData.Time;
            if (minData.Open==null || minData.Close==null)
                continue;
            if (newData.Open==null || newData.Close==null)
            {
                newData.Open=minData.Open;
                newData.High=minData.High;
                newData.Low=minData.Low;
                newData.YClose=minData.YClose;
                newData.Close=minData.Close;
                newData.Vol=minData.Vol;
                newData.Amount=minData.Amount;    
                newData.FlowCapital=minData.FlowCapital;  
            }
            else
            {
                if (newData.High<minData.High) 
                    newData.High=minData.High;
                if (newData.Low>minData.Low) 
                    newData.Low=minData.Low;
                newData.Close=minData.Close;
                newData.Vol+=minData.Vol;
                if (minData.Amount!=null) newData.Amount+=minData.Amount;
                newData.FlowCapital=minData.FlowCapital;  
            }
        }
    }
    return result;
}

注意事项

  1. 周期计算只能是同步的, 不支持异步
  2. 如果你要取异步的数据, 只能点击周期按钮的时候, 你先异步取数据, 取完数据以后再调用HQChart的周期切换函数, 这样再外部调用DataPlus.GetMinutePeriodData() 就可以把之前取到的数据填上去。

推荐是本地算, 这样任意周期的你都可以做, 不需要后台了。

如果还有问题可以加交流QQ群: 950092318

HQChart代码地址
地址:github.com/jones2000/HQChart

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

HQChart

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

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

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

打赏作者

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

抵扣说明:

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

余额充值