各位老师,
在TBQ上做跨周期调用时,发现TBQ和TBQ3的计算结果时不一样的。请看一下是什么原因?
举例:在策略界面增加数据源的方式实现跨周期,例如RB2510,data0是小时线,data1是日线。
测试代码如下。在TBQ和TBQ3的K线图上读MA2的值,两者的显示结果是不同的。
TBQ:从21:00开始到14:00更新一次计算结果,这7根bar的结果是相同的。下一天的21:00开始变。这个方式我理解是正确的
TBQ3:每根bar的MA2都是不同的。我猜测是插值计算出来的?而且用RB000指数合约时,还出现过最后一根K线是14:30开始而不是14:00开始的。(TBQ和TBQ3都是最新版本)。
Params
//此处添加参数
Vars
//此处添加变量
Series<Numeric> MA1;
Series<Numeric> MA2;
Events
OnBar(ArrayRef<Integer> indexs)
{
MA1 = Data0.AverageFC(Data0.Close, 14);
MA2 = Data1.AverageFC(Data1.Close, 14);
Commentary("MA1="+Text(MA1));
Commentary("MA2="+Text(MA2));
}
这个就是tbq3的特色。
你在小时线上要计算日线的均线,那么每一根小时线上的均线值就应该是这根bar的收盘价参与计算,而不是直接拿日线收盘价计算,那就是未来数据了
那不对啊,未来数据指的是用之后的日线收盘数据来计算。但是当前bar之前已经结束的日线数据都是不变的,不会存在未来函数。而且无论是几点的bar,之前的日线数据都是不变的,计算出来的基于历史日线数据的结果都应该是不变的才对,怎么能上午11点算的过去5天的均线和下午2点计算的过去5天的均线值不一样呢?
我再理解一下,你的意思是不是,从当前bar开始往前每7根bar算一个日线周期来滚动计算,而不是以标准的15:00收盘价作为日线切分的周期来计算的?
另外,如果要实现跟TBQ一样的这种方式,TBQ3上可以做到吗?用什么方式?
我个人认为TBQ的这种才是合理的,我在k线图上切换日线或者小时线的周期来看图的话,已经发生过的历史数据和指标都不可能再变了。
tbq这种未来数据明显是不合理的
3. 接上面,我其实想要了解的是,怎么在跨周期里能够调用到这样稳定的日线级别的数据。如果我的调用方式不正确,那就请您告诉我,或者告诉我在哪里能学到。
日内的小周期上是不可以调用到当日的用收盘价计算的指标值的,我们不建议这种取未来数据的方式,也不会提供这种未来函数
好的 ,向您道歉,我删除我的回复
MA2 计算中,Data1.Close时刻都在变,怎么会当日一直不变呀
如果要引用不变的 ,应该回溯呀
用Data1.Close[1]
不知道您看没看到我后面贴图以及解释的内容部分。我的问题不是在日内用当日的收盘价去计算,这个是未来数据,我理解。我想要的是,没有收盘时引用的都是基于昨天收盘价计算出来的结果,等到下个收盘价生成时,再更新计算结果。这样的结果跟我直接用日线K线图上看到结果是一致的。日内不用变更日线的数据。
这个是用TBQ3的行情板块,MA2改成14,我后来的例子就是说,我看到的上周五及之前的数据都是历史数据,怎么能稳定的调用出这个数据出来
您的意思是说,在代码中MA的计算里,应该改成MA2=AverageFC(Data1.Close[1], 14)吗?之前用的时候都不用这么写的。另外就是,就算不用Data1.Close【1】,以往已经发生过的历史数据也跟实际的日线数据对不上呀
没有看到贴图和其他解释内容。
建议发详细描述