跨大周期回测取不到正确的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));
    }


跨周期取macd的值,取出来的值是错误的
跨周期引用macd值不真实的问题
请教值取不到的问题
跨周期获取MACD的DEA数据为0.
BOLL跨周期跨天数的指标值如何取?
跨周期引用如何在小周期实时显示大周期指标?
GetIndustryBySymbolAndId取板块信息取不到值
技术请教:大小周期的跨周期策略如何判断小周期bar位于大周期bar的位置?
跨周期如何引用日线级的MACD
MACD跨周期显示
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)能查到,但数值不正确

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