首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否需要所有以前的历史值来计算EMA?

是否需要所有以前的历史值来计算EMA?
EN

Stack Overflow用户
提问于 2021-08-30 11:18:27
回答 1查看 216关注 0票数 2

我正在用PHP计算一些价格系列的EMA。

维基百科中的移动平均值

什么是EMA?

假设您有一个包含5000个元素的数组,并且要计算EMA 10。

与SMA相比,在SMA中只需要得到最后的10个值并计算平均值,而在EMA中则需要以前的EMA值来进行新的计算。首先,EMA值是所需元素的SMA数。

我的问题是,您是否需要处理EMA之前的5000个值?

正如我所说的,它使用前面的值进行下一次计算,理论上您必须这样做,但是当您有5百万寄存器时,它可能是一个问题。

还是仅仅得到从$n-20到$n-11的项目,计算SMA,然后对最后10个值应用EMA?

此外,旧的值是EMA被废弃更快,因为它使用Alpha。我创建了下一个计算EMA的函数:

代码语言:javascript
复制
function EMA($v,$lastvalue,$num=200)
{

    if($num>(count($v)-1))
        return FALSE;        
    $MA=0;    
    $initMA=count($v)-2*$num;
    if($initMA<0)
        $initMA=0;
    for($i=0,$j=$initMA;$i<$num;$i++,$j++)
        $MA+=$v[$j];
    $EMA=$MA/$num;
    $a = 2/ ($num + 1);
    for($i=$j;$i<count($v)-1;$i++)
        $EMA = $a * $v[$i+1]+ (1-$a) * $EMA;
    $EMA = $a * $lastvalue+ (1-$a) * $EMA;
    return $EMA;
}

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-07 19:29:46

我用EMA20进行了长系列测试,得到了已知的ema20结果,并将值与我的algoritm进行了比较,是的,从开始就需要所有的值。

对于像EMA200这样的数很多的EMA,它并不重要,因为旧值的权重确实很小,但是在小的ema中,当高波动性时,使用历史上所有的值来计算ema是很重要的。

因此,一个有效的算法需要将所有以前的ema存储在一个文件或数据库中,因为计算当前的ema会生成大量的计算,如果您已经计算了它们,这只是一个简单的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68983239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档