Как рассчитать MACD с помощью PHP?

Я получаю аналогичные значения MACD и Signal, используя следующий класс в Binance:

Я получил этот код от:

https://github.com/hurdad/doo-forex/blob/master/protected/class/Technical%20Indicators/MACD.php

Как я могу изменить класс, чтобы получить точное значение?


person yancha    schedule 22.01.2019    source источник
comment
Здравствуйте, можете ли вы предоставить информацию о входных данных, которые вы отправляете в эту библиотеку?   -  person Noah Solomon    schedule 22.01.2019
comment
Они не похожи на хорошие классы. Статические методы, неуклюжие имена файлов и папок, плохие сообщения коммитов, отсутствие активного обслуживания, отсутствие тестов. Тем не менее, вы можете использовать их, если необходимо - пробовали ли вы создать свой собственный класс, расширяющий этот?   -  person halfer    schedule 23.01.2019


Ответы (2)


Вы можете использовать библиотеку php-trader, обратите внимание, что она работает как только CLI.

Но это довольно простая математика:

MACD = EMA26 - EMA12

введите здесь описание изображения

введите здесь описание изображения

person NVRM    schedule 22.01.2019
comment
как насчет гистограммы и сигнала? - person Ezequiel Fernandez; 30.01.2021

/* * Экспоненциальное скользящее среднее (EMA) * * Начало EPA задается первой точкой данных. * Затем каждый день после этого: * EMAtoday = α⋅xtoday + (1-α)EMAyesterday * * где * α: коэффициент, представляющий степень уменьшения веса, постоянный коэффициент сглаживания от 0 до 1. * * @param array $ числа * @param int $n Длина EPA * @return массив экспоненциальных скользящих средних */

function exponentialMovingAverage( $numbers, $n)
{
$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;}
person bobnino    schedule 16.03.2020
comment
это формула EMA и выглядит как скопированная отсюда /вопросы/39444699/ - person Kemal; 23.06.2020