php - php 中的指数移动平均线

标签 php math exponential weighted-average

我想用 PHP 计算 EMA(指数移动平均线)值。

我试过以下代码,但它给了我 500 错误。

$real = array(12,15,17,19,21,25,28,12,15,16);
$timePeriod = 3;
$data = trader_ema($real,$timePeriod);
var_dump($data);

PHP:EMA 计算函数 trader-ema

尝试了很长时间的谷歌搜索,但在 PHP 中没有得到任何帮助。所以,我不知道需要做什么来计算 EMA 值。

Edit-1:安装的扩展

我已经安装了所有必要的扩展,现在我正在获取输出。 但它似乎没有提供正确的输出。

我认为用于计算 EMA 的 PHP 函数无法正常工作。 在这方面的任何帮助将不胜感激。

最佳答案

我推荐使用以下数学库: https://github.com/markrogoyski/math-php

public static function exponentialMovingAverage(array $numbers, int $n): array
{
     $m   = count($numbers);
     $α   = 2 / ($n + 1);
     $EMA = [];

     // Start off by seeding with the first data point
     $EMA[] = $numbers[0];

     // Each day after: EMAtoday = α⋅xtoday + (1-α)EMAyesterday
     for ($i = 1; $i < $m; $i++) {
        $EMA[] = ($α * $numbers[$i]) + ((1 - $α) * $EMA[$i - 1]);
     }

     return $EMA;
}

关于php - php 中的指数移动平均线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39444699/

相关文章:

javascript - 我已经集成了 instagram api 但没有显示所有图像

php - 第二种意见的安全性优势,我通过 postgresql 散列和加盐用户密码的计划是否存在缺陷?

algorithm - 最小化总和之差的绝对值

Java以指数格式输出 double

shell - 提升至 shell 中的权力

php - 在 Laravel 5.1 上在 Controller 的构造函数之前运行中间件?

php - CSS 表单提交

java - 将角度保持在 -179 到 180 度之间的简单方法

Java,在所需位置生成随机多边形

c++ - C++ 中的 double (或 pow(2, 1000))