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订阅计算结果有误,通过设置的数据源,结果与原始数据一样,请问是哪里出了错?
结果是各数据源起始日期忘记调一致,给您添麻烦了!
MACD指标的计算需要依靠bar的数量,如果bar数量不同,macd值也会不同,你工作区图层的bar数量设置是不同的,最后导致了MACD值不同
可以通过客服系统提交工作区文件来复查
已发送至客服邮箱,谢谢!