跨周期调用的代码和实现方式的问题

各位老师,

在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));

}

关于跨周期 调用的问题
关于跨周期的问题
TBQ跨周期调用实时进出场的例子
如何跨周期调用
跨周期调用开仓问题
关于跨周期的问题
关于跨周期的问题
跨周期指标调用回测问题
请教跨周期订阅中的周期设置问题
关于跨周期代码在行情页面加载运行的问题

这个就是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】,以往已经发生过的历史数据也跟实际的日线数据对不上呀

没有看到贴图和其他解释内容。

建议发详细描述