Мы будем использовать PHP для расчета 8-дневной и 21-дневной экспоненциальных скользящих средних, чтобы определить бычий / медвежий переход для биткойнов.

Что такое скользящие средние?

Скользящие средние позволяют визуализировать движение цены финансового инструмента за определенный период времени. Он широко используется в техническом анализе и называется «запаздывающим» индикатором, поскольку основан на исторических ценах.

Двумя обычно используемыми средними являются простая скользящая средняя (SMA) и экспоненциальная скользящая средняя (EMA). SMA - это простое среднее значение ценной бумаги за определенный период. EMA аналогична, но придает больший вес более свежим ценам.

Примеры SMA и EMA

Самый простой способ понять SMA и EMA - это посмотреть на примере.

Мы возьмем цены закрытия вымышленной ценной бумаги за последние 15 дней следующим образом:

Неделя 1: 10, 12, 15, 11, 18.

Неделя 2: 21, 17, 15, 10, 7.

Неделя 3: 8, 9, 15, 17, 20.

В этом примере 10-дневная SMA будет средней ценой закрытия за предыдущие 10 дней. SMA на следующий день будет за предыдущие 10 дней, исключая первый день из списка. И так далее.

EMA немного более вовлечена. Он включает в себя расчет весового множителя перед определением EMA с использованием цены, значения веса и EMA предыдущего дня.

К счастью, вам не нужно беспокоиться об основной арифметике. В PHP есть библиотека Trader для выполнения расчетов технического анализа.

8-дневная и 21-дневная EMA

8-дневная и 21-дневная EMA - очень популярные краткосрочные индикаторы, используемые как на фондовом, так и на рынке криптовалют.

Основные сигналы:

  • Когда 8-дневная линия пересекает 21-дневную. Это указывает на бычье пересечение и на то, что цена, скорее всего, вырастет (сигнал на покупку).
  • Когда 8-дневная линия пересекает 21-дневную. Это указывает на медвежье пересечение, и что цена, скорее всего, снизится (сигнал на продажу).

Глядя на график выше, я отметил, где пересекаются 8-дневный (синий) и 21-дневный (красная линия), в результате чего возникает тренд.

Слово предостережения

Я не являюсь финансовым консультантом, и ничто из содержания этой статьи не должно толковаться как финансовый совет. Рынок криптографии очень волатилен, и вам следует провести собственное тщательное исследование, прежде чем делать какие-либо инвестиции.

Также важно отметить, что технический анализ несовершенен. Поскольку рынок управляется психологией, некоторые сигналы могут быть полностью отключены. Вот почему так важно одновременно использовать разные индикаторы (например, RSI и Volume). Затем вы должны искать слияния, то есть нескольких индикаторов, показывающих схожую тенденцию. Даже в этом случае нельзя быть уверенным на 100%.

Технический анализ - это не серебряная пуля.

Подготовка вашей среды PHP

Мы будем использовать PHP Trader extension для расчета EMA. Вы можете убедиться, что он установлен, проверив результат phpinfo():

Исторические данные о ценах доступны через отличный CryptoCompare API. Мы будем использовать их API исторических данных. Следующий запрос покажет нам цены в долларах США за BTC за последние 60 дней:

Https://min-api.cryptocompare.com/data/histoday?fsym=BTC&tsym=USD&limit=60

Он рассматривает время закрытия как 12:00 GMT, а поле time возвращает метку времени Unix (время эпохи).

Определите EMA

Добавьте следующий код, чтобы прочитать ответ от CryptoCompare API:

<?php
$response = json_decode(file_get_contents('https://min-api.cryptocompare.com/data/histoday?fsym=BTC&tsym=USD&limit=60'));

Это вернет следующий ответ, если вы сделаете print_r($response):

Затем мы добавим цены закрытия в массив:

$prices = [];
foreach ($response->Data as $v) {
    $prices[] = $v->close;
}

Теперь, когда эти цены сохранены, мы можем использовать функцию PHP trader_ema () для определения 8-дневной и 21-дневной EMA:

$ema8 = trader_ema($prices, 8);
$ema21 = trader_ema($prices, 21);

Небольшое предостережение: по умолчанию расширение Trader использует точность до трех знаков после запятой. Для работы с сатоши или монетами, которые отображаются с несколькими десятичными знаками, такими как XRP и XLM, вы можете установить точность во время выполнения:

ini_set('trader.real_precision', '8');

Или в файле php.ini:

trader.real_precision=8

Теперь, когда у нас есть массивы EMA, мы возьмем последние две из них, чтобы установить EMA предыдущего дня и текущую EMA:

$current_8 = array_pop($ema8);
$current_21 = array_pop($ema21);
$previous_8 = array_pop($ema8);
$previous_21 = array_pop($ema21);

Теперь мы можем просто проверить, произошло ли перекрестие, и отреагировать соответствующим образом:

if ($current_8 > $current_21 && $previous_8 < $previous_21) {
    echo 'Buy';
} elseif ($current_8 < $current_21 && $previous_8 > $previous_21) {
    echo 'Sell';
} else {
    echo 'Do Nothing';
}

Это полный, окончательный исходный код с некоторыми выходными данными:

<?php
ini_set(‘trader.real_precision’, ‘8’);
$response = json_decode(file_get_contents(‘https://min-api.cryptocompare.com/data/histoday?fsym=BTC&tsym=USD&limit=60'));
$prices = [];
foreach ($response->Data as $k => $v) {
    $prices[] = $v->close;
}
$ema8 = trader_ema($prices, 8);
$ema21 = trader_ema($prices, 21);
$current_8 = array_pop($ema8);
$current_21 = array_pop($ema21);
$previous_8 = array_pop($ema8);
$previous_21 = array_pop($ema21);
echo ‘Current 8-day: ‘ . $current_8 . “\n”;
echo ‘Current 21-day: ‘ . $current_21 . “\n”;
echo ‘Previous 8-day: ‘ . $previous_8 . “\n”;
echo ‘Previous 21-day: ‘ . $previous_21 . “\n”;
if ($current_8 > $current_21 && $previous_8 < $previous_21) {
    echo ‘Buy’;
} elseif ($current_8 < $current_21 && $previous_8 > $previous_21) {
    echo ‘Sell’;
} else {
    echo ‘Do Nothing’;
}

Реальный мир использует

Простое реальное приложение для этого могло бы встроить его в торгового бота. Вы можете настроить его на ежедневное выполнение, используя cron на сервере. Запустите его после последней цены закрытия, чтобы определить, было ли пересечение.

Вы можете интегрироваться с такой биржей, как Binance, и совершать сделки через их API, если ваш бот обнаруживает определенные тенденции. Как упоминалось ранее, попробуйте найти подтверждение как минимум по трем различным индикаторам, чтобы минимизировать риск.

В следующих статьях мы рассмотрим другие индикаторы и способы их использования для определения тенденций на рынке криптовалют.

Улучшите свои навыки веб-разработки!

Подпишитесь на мой информационный бюллетень, где я поделюсь содержательными статьями о веб-разработке и блокчейне, чтобы развить ваши навыки.