同一个跨周期macd计算公式,通过SubscribeBar订阅、设置日周k线,两种方式结果不同(后复权)?

Params
    Numeric MACDFastLength1(12);
    Numeric MACDSlowLength1(26);
    Numeric MACDLength1(9);

Vars
    Series<Numeric> MACDDiff0; 
    Series<Numeric> AvgMACD0;
    Series<Numeric> MACD0;
    
    Series<Numeric> MACDDiff1; 
    Series<Numeric> AvgMACD1;
    Series<Numeric> MACD1;
    
    Series<Numeric> MACDDiff2; 
    Series<Numeric> AvgMACD2;
    Series<Numeric> MACD2;
    
Events
    //此处实现事件函数
    
    //初始化事件函数,策略运行期间,首先运行且只有一次
    OnInit()
    {
        SubscribeBar(Data0.Symbol,"1D",Data0.BeginDateTime, 0, Enum_Data_RolloverBackWard);    //增加日k线数据源
        SubscribeBar(Data0.Symbol,"1W",Data0.BeginDateTime, 0, Enum_Data_RolloverBackWard);    //增加周k线数据源
    }
    OnBar(ArrayRef<Integer> indexs)
    {
        Range[2:2]
        {
            MACDDiff2  = XAverage(Close[1],MACDFastLength1) - XAverage(Close[1],MACDSlowLength1) ;
            AvgMACD2   = XAverage(MACDDiff2,MACDLength1);
            MACD2      = MACDDiff2 - AvgMACD2;
        }
        Range[1:1]
        {
            MACDDiff1  = XAverage(Close[1],MACDFastLength1) - XAverage(Close[1],MACDSlowLength1) ;
            AvgMACD1   = XAverage(MACDDiff1,MACDLength1);
            MACD1      = MACDDiff1 - AvgMACD1;
        }
        Range[0:0]
        {
            Commentary("data2.Close[1]:="+Text(data2.Close[1]));
            Commentary("MACDDiff2= "+Text(data2.MACDDiff2));
            Commentary("AvgMACD2= "+Text(data2.AvgMACD2));
            Commentary("MACD2= "+Text(data2.MACD2));            
            
            Commentary("data1.Close[1]:="+Text(data1.Close[1]));
            Commentary("MACDDiff1= "+Text(data1.MACDDiff1));
            Commentary("AvgMACD1= "+Text(data1.AvgMACD1));
            Commentary("MACD1= "+Text(data1.MACD1));
            
            MACDDiff0  = XAverage(Close[1],MACDFastLength1) - XAverage(Close[1],MACDSlowLength1) ;
            AvgMACD0   = XAverage(MACDDiff0,MACDLength1);
            MACD0      = MACDDiff0 - AvgMACD0;
            Commentary("data0.Close[1]:="+Text(data0.Close[1]));
            Commentary("MACDDiff0= "+Text(MACDDiff0));
            Commentary("AvgMACD0= "+Text(AvgMACD0));
            Commentary("MACD0= "+Text(MACD0));
        }
    }

通过SubscribeBar订阅计算结果有误,通过设置的数据源,结果与原始数据一样,请问是哪里出了错?

SubscribeBar 后 如何设置复权 、分割方式?
用SubscribeBar订阅K线的分割方式
请教跨周期订阅中的周期设置问题
使用SubscribeBar订阅K线,是不是设置不了委托偏移的??
【数据订阅】当使用SubscribeBar函数订阅一个数据源时,如何设置K线分割方式
【数据订阅】当使用SubscribeBar函数订阅一个数据源时,如何设置K线分割方式
日K收盘前的两种判断方式,哪个更好?
多日K线周期计算和股票复权
SubscribeBar订阅数据跨周期的时候怎么能让不显示其他周期的K线,只显示其中一个或者几个
周K线订阅K线失败,,周期=1week,不支持的频率

结果是各数据源起始日期忘记调一致,给您添麻烦了!

MACD指标的计算需要依靠bar的数量,如果bar数量不同,macd值也会不同,你工作区图层的bar数量设置是不同的,最后导致了MACD值不同

可以通过客服系统提交工作区文件来复查

已发送至客服邮箱,谢谢!