定义的缘故。
MACD:=MA(ACD,BARPOS);
这个acd不是每个K都能正常有值的,如果你换成C你发现就正常了。但是acd本身定义决定了在第一个k没有值。
处理办法是:
不要用ma函数。
macd:sum(acd,0)/(BARPOS-1);//这里使用BARPOS-1,因为第一个k acd没有值。所以均值周期应该用BARPOS-1
不是的,你看下sum函数参数说明啊,它第二个参数为0是有特殊含义的。
另外,我定义一个小10周期的波动率的话,这个是不是也要修改,LC:=REF(CLOSE,1);LO:=REF(OPEN,1);
CD:=ABS(LC-LO);
ACD:=CD/LO;
MACD:SUM(ACD,0)/(BARPOS-1)
MACD10:MA(ACD,10);
B:MACD10/MACD;
其中的MACD10:MA(ACD,10);编译的时候好像显示不正常啊

此主题相关图片如下:temp.png

不要漏了分号。
其他地方可以不用改,因为反正周期小于10的情况下,ma也是没有值的,这是符合正常逻辑的,毕竟不到10个周期计算不出来10周期均线。
前面那个macd那里要改是因为用ma得话,它始终会包含一个没有值的K的情况。