为什么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

AverageFC这个函数为什么在加了BarStatus==2这条件出来的值会有问题?
A_BuyProfitLossO 为什么有无效值
自带函数的计算输出为无效值
如何制定输出无效值
以下代码是否是无效的?
AverageFC计算方法是错的???
多周期多图层里如何使用AverageFC函数
为什么开盘时会闪烁的呢,我用的是A函数
用 buy 函数,为什么买不到指定的价格?
getdictime函数无效?

你应该是把TR PDI MDI都输出一下就清楚了 肯定是TR为0导致PDI MDI异常 连带后面adx也异常

summataion可能是递归算法 所以后面全错了

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