自己编写的ema和系统内置的ema计算结果有差异但是不知道原因

如题,因为策略里面不得不在循环中计算ema,而自带的ema必然是要引用序列的,所以采用折中的办法自己写了一个ema的计算函数,用数组把序列数据copy出来算,但是算出来的结果和开拓者自带的总是有误差,希望有大佬能帮忙看一下这个误差是什么导致的。取的数组经过反复验证是符合函数要求且没有问题的。

下面是我自己写的函数:

    Numeric EMA3(Integer n, Array<Numeric> sourceData){
        // 数据要求是长度比n大至少5倍,并且过去的数据在前,将来的数据在后
        Numeric alpha = 2/(n+1);
        Numeric EMA3 = sourceData[0];
        Integer j;
        for j = 1 to GetArraySize(sourceData) - 1 
            {

                EMA3 = sourceData[j] * alpha + EMASs * (1 - alpha);
                
            }
        Return EMA3;
    }

以jm2601为例子,9月12日收盘后,5分钟线上最新的k线算出来的ema在n为4时的值是1162.23

而官方自带的ema值算出来是1162.28,在百分位上差了5了,但是按照ema的计算原理,当数据量在n的5倍时,收敛差距已经在千分位水平了,这个误差显然是有问题的,但是我不知道问题在哪里,请各位大佬指点。

EMA计算结果,变为N/A
文华财经的EMA\EMA2\SLOPE函数,对应TB的函数是什么?
EMA指标无法正常显示
求EMA函数代码
跨周期引用EMA,开仓不生效
求EMA函数代码,谢谢
EMA2如何求得?
【量化源码共学】之二十,基于ADX及EMA进行判断
〔建议〕,增加EMA2线性指标!
基于ADX及EMA的交易系统多代码疑问

请提供完成的可编译可复现内容