为什么AverageFC函数计算出来的是无效值?

写了个DMI指标的函数,用于计算PDI、MDI、ADX的值。打印出ADX的值为“ADX=N/A”,附源码如下: Params NumericRef PDI; NumericRef MDI; Numeric Length1(28); Numeric Length2(6); Vars Numeric TR; Numeric HD; Numeric LD; Numeric DMP; Numeric DMM; Numeric ADX; Begin TR = Summation(Max(Max(High - Low,Abs(High - Close[1])),Abs(Low - Close[1])),Length1); HD = High - High[1]; LD = Low[1] - Low; DMP = Summation(IIF(HD > 0 && HD > LD,HD,0),Length1); DMM = Summation(IIF(LD > 0 && LD > HD,LD,0),Length1); PDI = DMP * 100 / TR; MDI = DMM * 100 / TR; ADX = AverageFC(Abs(MDI - PDI) / (MDI + PDI) * 100,Length2); print("ADX="+text(ADX)); return 1; End

你应该是把TR PDI MDI都输出一下就清楚了 肯定是TR为0导致PDI MDI异常 连带后面adx也异常 summataion可能是递归算法 所以后面全错了

所有有除法的计算公式都要考虑分母为0时的异常处理,如果是递归算法那更要考虑,不然只要出现一次异常值那就后面全都错了