Exponential moving average, или EMA, — это среднее, которое сильнее учитывает более свежие цены. Сглаженная линия помогает следить за движением цены на графике. Каждое новое значение сочетает текущую цену с предыдущим результатом. Поэтому EMA обычно реагирует быстрее, чем Simple moving average, или SMA, но по-прежнему опирается на уже доступные цены.
В конце каждого интервала, показанного на графике свечой, Petr записывает последнюю цену. Вместо нового сложения всех значений он может приблизить предыдущую EMA к этой цене на часть расстояния между ними. Именно так метод объясняет Fidelity. TradingView записывает тот же расчёт как сумму взвешенной новой цены и взвешенной предыдущей EMA. Это рекурсивное вычисление: следующий шаг использует результат предыдущего. [1] [2]
Эту долю задаёт коэффициент — число, определяющее вес новой цены. TradingView приводит распространённое соотношение 2 / (N + 1), где N — выбранная длина. Чем больше N, тем меньше вес новых данных и медленнее подстройка. Поэтому Petr должен знать не только название EMA, но и длину, и способ расчёта коэффициента. Длина управляет распределением весов; ниже приведён конкретный шаг с числами. [3]
В самом начале у Petr ещё нет предыдущей EMA. Fidelity описывает старт со SMA, обычного среднего первых цен. Выбор начального результата называется инициализацией. Если другой инструмент начинает иначе или загружает иной объём истории, линии могут различаться даже при одинаковых последующих ценах. С дальнейшими расчётами разница постепенно уменьшается. Само название EMA поэтому не гарантирует совпадения всех значений. [1]
Предыдущая EMA уже несёт влияние более старых цен. Как объясняет TradingView, каждый следующий шаг снова его ослабляет. Отсюда слово экспоненциальная: при постоянном коэффициенте влияние исходного значения многократно умножается на один и тот же множитель. Длина поэтому не задаёт конечное окно последних цен, за которым всё исчезает, как в SMA. Очень малое влияние также не равно точному нулю в математическом описании. При длине 1 с указанным коэффициентом есть простое исключение: EMA равна новой цене, а предыдущий результат больше не имеет веса. [3]
Petr меняет SMA на EMA, и при одинаковом периоде линия обычно следует ближе к новой цене. Fidelity отмечает обе стороны такой чувствительности: более раннюю реакцию и частые кратковременные изменения. На рынке без ясного направления Petr может увидеть череду быстрых разворотов. Торговое правило должно учитывать и стоимость этих сделок. Близость линии к цене сама по себе не говорит о качестве решений. [1]
Petr сравнивает свой график с графиком друга. В TradingView параметр Source выбирает исходные данные, например Close — последнюю цену свечи. Timeframe задаёт интервал данных индикатора, который может отличаться от интервала отображаемого графика. Прежде чем объявить расхождение ошибкой, они сравнивают рынок, поставщика данных, используемую цену, интервал и обработку пропусков. Сравнивать сами расчёты имеет смысл лишь при одинаковых входных данных. [2] [4]
На графике в реальном времени новейшая EMA меняется вместе с ценой. TradingView объясняет, что Close открытой свечи — постоянно обновляемое значение, а не окончательная цена закрытия. Если EMA его использует, меняются и результат, и возможное пересечение. Petr должен отличать правило, проверяемое внутри интервала, от правила, которое ждёт его завершения. Исторический тест не может считать конечную цену информацией, известной заранее. [5]
Petr умеет рассчитывать EMA, но ещё не определил, когда и как торговать. В документации по стратегиям TradingView разделяет сигнал, создание заявки и её фактическое исполнение. Нужны также правила выхода из позиции, время действий и затраты. Важно учитывать overfitting — подгонку правил под случайности прошлого графика. Проверка на отдельных данных без новой подгонки помогает выявить эту слабость. Даже точный расчёт не обещает будущего результата. [6]
Одинаковая цена, разные начальные значения
Для условного учебного расчёта возьмём коэффициент 0.5, соответствующий длине 3 по формуле 2 / (N + 1). Предыдущая EMA равна 100000 USD/BTC, новая цена — 100040 USD/BTC. Получаем 0.5 × 100040 + 0.5 × 100000 = 100020 USD/BTC. Другой расчёт использует ту же новую цену, но предыдущую EMA 100010 USD/BTC: 0.5 × 100040 + 0.5 × 100010 = 100025 USD/BTC. Исходная разница 10 USD/BTC уменьшилась до 5 USD/BTC, но не исчезла. Так может постепенно затухать различие начальных значений. Числа объясняют метод, а не текущий рынок или указание торговать.
Для полной картины прочитайте эту статью вместе с Moving average, Simple moving average, Moving average crossover, Timeframe, MACD, Backtesting. На эту статью также ссылаются Moving average, Simple moving average, Moving average crossover, Relative Strength Index.
01EMA использует только выбранное число последних цен?+
Не в виде конечного окна, как SMA. Предыдущая EMA передаёт и постепенно слабеющее влияние более давней истории. Длина обычно определяет коэффициент, а не границу, за которой прошлое внезапно исчезает. Для точного воспроизведения результата нужно знать и способ инициализации.
02Более быстрая EMA всегда лучше SMA?+
Зависит от того, что вы хотите наблюдать. Чувствительная линия может раньше показать изменение, но и чаще разворачиваться при коротких колебаниях. Поэтому оценивайте всё торговое правило, включая исполнение и затраты, в том числе на данных, которые не использовались для подгонки. Сама скорость не доказывает преимущества.