2016-09-12 3 views
1

Я хочу вычислить значение EMA (Экспоненциальное скользящее среднее) в PHP.Экспоненциальное скользящее среднее в php

Я пробовал со следующим кодом, но это дает мне 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: Установленные расширения

Я установил все необходимые расширения, сейчас я получаю выход. Но, похоже, он не дает правильного вывода.

Я думаю, что функция PHP для вычисления EMA работает неправильно. Любая помощь в этом будет принята с благодарностью.

+3

500 является общим кодом ошибки. Проверьте журналы для получения точного сообщения об ошибке и обновите вопрос. Возможно, расширение трейдера не установлено: http://php.net/manual/en/trader.installation.php –

+0

Что такое '$ array'? –

+0

@PatrickMlr: Я редактировал свой вопрос, это было по ошибке. –

ответ

0

Я рекомендую использовать математическую библиотеку из: 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; 
}