以下是代码
Params
Numeric N_DDI(13); //DDI 参数
Numeric N1_DDI(30); //DDI 参数
Numeric M_DDI(10); //DDI 参数
Numeric M1_DDI(5); //DDI 参数
Vars
Series<Numeric> TR;
Series<Numeric> DMZ;
Series<Numeric> DMF;
Series<Numeric> DIZ;
Series<Numeric> DIF;
Series<Numeric> DDDI;
Series<Numeric> ADDI;
Series<Numeric> AD;
Events
OnBar(ArrayRef<Integer> indexs)
{
TR = Max(Abs(High-High[1]),Abs(Low-Low[1]));
If((High+Low)<=(High[1]+Low[1]))
{
DMZ=0;
}Else
DMZ=TR;
If((High+Low)>=(High[1]+Low[1]))
{
DMF=0;
}Else
DMF=TR;
DIZ=Summation(DMZ,N_DDI)/(Summation(DMZ,N_DDI)+Summation(DMF,N_DDI));
DIF=Summation(DMF,N_DDI)/(Summation(DMF,N_DDI)+Summation(DMZ,N_DDI));
DDDI=DIZ-DIF;
ADDI=SMA(DDDI,N1_DDI,M_DDI);
AD=Average(ADDI,M1_DDI);
PlotNumeric("ADDI",ADDI,0,Red);
PlotNumeric("DIF",DIF,Yellow);
If (DDDI >= 0)
PlotNumeric("DDI",DDDI,0,Red);
Else
PlotNumeric("DDI",DDDI,0,Green);
}
求教:为什么“ADDI”计算后是空值?
因为你的计算有一部分放在Else下运行,当有Bar不执行Else下内容,就会出现函数内某个数据缺失。