自带函数的计算输出为无效值

代码如下,为什么输出的ema为无效值呢?

 

Params

Vars

    Series<Numeric> ff;
    Series<Numeric> gg;
    Series<Numeric> Ema;

    OnBar(ArrayRef<Integer> indexs)
    {
        ff=Abs(close-close[1]);
        gg=(close-close[20])/Summation(ff,20);
        Ema = XAverage(gg,30);
        Commentary("gg="+Text(gg));
        Commentary("ema="+Text(Ema));
    }

如何制定输出无效值
为什么AverageFC函数计算出来的是无效值?
可以将指标计算的值输出到文件吗?
PlotBool设置输出值的显示颜色无效
程序自带lowest函数计算结果错误咨询
A_BuyProfitLossO 为什么有无效值
AverageFC 计算均值为0
求斜率的自带函数
getdictime函数无效?
请问,输出转股价为0

排除除数为0,即summation(ff,20)为0的情况

如果存在分母为0的情况,那也只能是个别K线的,但是这个计算出来的ema全部K线都是无效值,是为什么呢?另外gg有输出值,但ema是无效值,就更说不通了

除0运算在计算机中会出错,得到结果变成非法值,而ema运算是依赖前一根BAR的值的,所以就会导致后续一系列的错误。这个规避是很容易的,除法运算前加个条件就是。

        ff=Abs(close-close[1]);
        Numeric sum1 = Summation(ff,20);
        if(sum1<>0) gg=(close-close[20])/sum1;
        Ema = XAverage(gg,30);
        Commentary("sum1="+Text(sum1));
        Commentary("gg="+Text(gg));
        Commentary("ema="+Text(Ema));
 

谢谢,看了函数xaverage才发现是迭代历史所有的K线,有一个为0就会导致出现问题