Мы будем использовать 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, если ваш бот обнаруживает определенные тенденции. Как упоминалось ранее, попробуйте найти подтверждение как минимум по трем различным индикаторам, чтобы минимизировать риск.
В следующих статьях мы рассмотрим другие индикаторы и способы их использования для определения тенденций на рынке криптовалют.
Улучшите свои навыки веб-разработки!
Подпишитесь на мой информационный бюллетень, где я поделюсь содержательными статьями о веб-разработке и блокчейне, чтобы развить ваши навыки.