跨大周期回测取不到正确的macd值

如图。我想在每根5分钟k线上取到对应的小时线close值,计算小时线macd的diff。问题是,光标在5分钟K移动时,虽然回测一小时之内的data1.close不会变,但以此为计算基础的diff_H的值,却在不断改变。5分钟线的第55分钟close等于小时线的close,这时的diff_H仍然不正确。SetBasePeriod(Data0.Frequency)是关闭的。代码如下:Vars Series<Numeric> Diff_H; Events OnInit() { SubscribeBar(Symbol, "H",20251201); Range[0:1] { //SetBasePeriod(Data0.Frequency); //周期基准:5min } } OnBar(ArrayRef<Integer> indexs) { Numeric diff = XAverage(Close, 12) - XAverage(Close, 26); Diff_H = XAverage(Data1.Close, 12) - XAverage(Data1.Close, 26); Commentary("Data1.Open:"+Text(Data1.Open,0) + ",Data1.Close:"+Text(Data1.Close,0)); Commentary("diff:"+Text(diff,2)); Commentary("Diff_H:"+Text(Diff_H,2)); }

XAverage(Data1.Close, 12)你对这个函数的理解应该是有问题的。你应该是以为,这个函数的计算的是在大周期上,从最新一根bar往回数12根,取每根bar上的close计算加权平均。实际上这个函数计算的是小周期上,从最新一根bar往回数12根,把每一根小周期bar对应的大周期bar的close进行计算加权平均。你要的表达方式应该是data1.XAverage(Data1.Close, 12)

回复:感谢老师的回复!按您说的修改后,还是不能查询到正确的数值,查出来的是负值,实际是正数

回复:感谢老师!改成Diff_H = Data1.XAverage(Data1.Close, 12) -Data1.XAverage(Data1.Close, 26);就可以了!

回复:Diff_H = Data1.XAverage(Data1.Close, 12) - Data1.XAverage(Data1.Close, 26);DEA_H = Data1.XAverage(Diff_H, 26);请问老师,DEA_H 用上面的方法查不到,用DEA_H = XAverage(Diff_H, 26)能查到,但数值不正确

回复:DEA_H = Data1.XAverage(data0.Diff_H, 26);

回复:神奇啊!这个data0加了就好了!厉害!!!!

回复:你还是教程看少了 https://video.tbquant.net/video?id=video431

补充:实盘中,5分钟线的Diff_H的确会不断变化,直到5分钟线的第55分close等于小时线close,但为什么这时计算出的值也不一致?