Стратегия скользящих средних: SMA, EMA, пересечения и фильтр тренда
Скользящие средние — самый базовый и одновременно самый распространённый инструмент технического анализа. На их основе строятся стратегии пересечений (golden/death cross), фильтры тренда, динамические уровни поддержки и сопротивления. Разбираем типы скользящих (SMA, EMA, WMA), как выбирать период, какие комбинации работают и почему большинство «золотых крестов» в реальной торговле сливают депозит, как тестировать стратегию на Python без overfit и в каких рынках MA-стратегии вообще не работают.
Что такое скользящая средняя
Скользящая средняя (moving average, MA) — индикатор, который усредняет цену за последние N свечей. С каждой новой свечой окно сдвигается, старое значение выпадает, новое добавляется — отсюда «скользящая». Получается линия, которая повторяет ценовое движение, но более гладко, без шума.
Главное использование: фильтр направления. Если цена выше скользящей средней — тренд восходящий, ниже — нисходящий. Это упрощение, но как первичный фильтр контекста — работает.
Скользящие средние лагирующие по своей природе: они отражают то, что уже произошло, не то, что произойдёт. Это и сильная сторона (надёжное подтверждение), и слабая (запоздалые сигналы на разворотах).
Типы скользящих средних
SMA — простая (Simple Moving Average)
Арифметическое среднее последних N значений. Каждая свеча имеет одинаковый вес.
SMA(N) = (P_t + P_{t-1} + ... + P_{t-N+1}) / N
Плюс: легко считать, легко интерпретировать. Минус: одинаково реагирует на старые и свежие данные. Если 30 свечей назад был резкий импульс, он всё ещё влияет на SMA(30).
EMA — экспоненциальная (Exponential Moving Average)
Свежие значения имеют больший вес, старые — меньший, по экспоненциальному закону.
EMA_t = α × P_t + (1 − α) × EMA_{t-1}
где α = 2 / (N + 1)
Для EMA(20): α ≈ 0.0952. То есть текущая цена вносит 9.5% в значение, а предыдущая EMA — 90.5%. Так как сама EMA_{t-1} зависит от ещё более ранних значений (но с убывающим весом) — формально EMA учитывает всю историю, но с экспоненциальным затуханием.
Плюс EMA: быстрее реагирует на свежие движения. Минус: на сильном шуме даёт больше ложных сигналов, чем SMA.
WMA — взвешенная (Weighted Moving Average)
Веса убывают линейно: последнее значение имеет вес N, предпоследнее N−1, …, самое старое — 1.
WMA(N) = (N × P_t + (N-1) × P_{t-1} + ... + 1 × P_{t-N+1}) / (N × (N+1) / 2)
WMA — компромисс между SMA и EMA: быстрее SMA, плавнее EMA. На практике встречается реже двух предыдущих.
Другие варианты
- HMA (Hull MA) — гладкий аналог с меньшим лагом, формула сложнее.
- DEMA / TEMA — двойная и тройная EMA для ускорения отклика.
- VWAP — взвешенное по объёму среднее, отдельная семья индикаторов.
- VMA (Variable MA) — адаптивная по волатильности.
Для большинства частных трейдеров достаточно понимать SMA и EMA — на них строится 95% стратегий.
Как выбирать период
Период скользящей средней определяет «горизонт» взгляда. Типичные значения по тайфрейму:
| Назначение | Период | На каком ТФ |
|---|---|---|
| Краткосрочный тренд | 9, 20 | M5–M30 |
| Среднесрочный тренд | 50 | H1–H4 |
| Долгосрочный тренд | 200 | D1 |
| Гипер-длинный | 500–1000 | D1, W |
Магических чисел нет. MA(50) и MA(200) на дневках стали стандартом не потому, что они работают лучше других, а потому что их много кто использует — самоисполняющееся пророчество. На уровне 200-дневной средней часто видна реакция цены просто потому, что туда смотрят все участники рынка.
Главная ошибка новичка — подбирать период оптимизацией на исторических данных. Если протестировать SMA с периодом от 5 до 200 на одной бумаге, обязательно найдётся «лучший» — например, 73. Но он работает только на этой истории. На свежих данных стратегия проваливается. Подбор периода = переподгонка.
Разумный подход — фиксировать стандартные периоды (20, 50, 200), не оптимизировать их под конкретный инструмент.
Стратегия пересечения двух MA: golden cross / death cross
Самая известная стратегия на скользящих средних.
- Golden cross (золотой крест): быстрая MA (например, MA(50)) пересекает медленную MA (MA(200)) снизу вверх — сигнал на лонг.
- Death cross (крест смерти): быстрая пересекает медленную сверху вниз — сигнал на шорт или выход.
Логика: когда краткосрочное среднее становится выше долгосрочного, это значит, что свежая динамика — растущая, тренд развернулся.
Что показывает реальный бэктест
В большинстве исторических тестов golden cross на индексных бумагах (S&P 500, индекс ММВБ) даёт примерно нулевую или слабо-положительную доходность. Причина: пересечение MA(50)/MA(200) — крайне запаздывающий сигнал. К моменту, когда крест произошёл, рынок уже сдвинулся на 10–20% от низа. Большая часть тренда оказывается «вне позиции».
На отдельных акциях golden cross иногда работает лучше — но это статистика выживших. Из 50 акций крест отработает на 15, а на 35 даст убыток.
Когда стратегия имеет смысл
- Как фильтр направления в составе более широкой стратегии (например, торговать лонг только если MA(50) > MA(200)).
- На сырьевых рынках с длинными трендами (нефть, металлы) — там кресс часто отлавливает реальные многомесячные движения.
- В составе trend-following фондов — там размер позиции от ATR, и golden cross — лишь триггер входа.
Как самостоятельная стратегия «купил на кресте, продал на обратном кресте» — это проигрышная стратегия в среднем по портфелю акций. Лучше использовать как один из 3–5 фильтров.
Стратегия одной MA: фильтр тренда
Простая, но статистически более надёжная схема:
- Цена закрытия выше MA(200) → лонг разрешён, шорт запрещён.
- Цена закрытия ниже MA(200) → шорт разрешён, лонг запрещён.
Сама MA — не сигнал, а разрешение. Сигнал даёт другая стратегия (пробой, паттерн, mean reversion). MA только фильтрует, в каком направлении торговать.
Эта схема убирает 50% худших сделок без существенного снижения общего профита. Простая и работает на большинстве инструментов.
MA как поддержка / сопротивление
Большие игроки часто покупают на касании цены MA(50) или MA(200) в восходящем тренде, продают на касании в нисходящем. Это превращает скользящую среднюю в динамический уровень:
- Восходящий тренд: MA(50) — поддержка, к которой цена откатывается.
- Нисходящий: MA(50) — сопротивление, от которого цена отбивается вниз.
Тактика: ждать касания цены к MA, ловить разворотный паттерн (молот, поглощение), входить с коротким стопом.
Преимущество: ясная зона риска (стоп за MA), хороший risk/reward. Недостаток: не каждое касание отрабатывает; в боковике MA «протыкается» туда-сюда без направления.
Бэктест стратегии на Python
Минимальный код для проверки golden cross на одной бумаге:
import pandas as pd
import numpy as np
def golden_cross_backtest(df: pd.DataFrame, fast=50, slow=200):
df = df.copy()
df["ma_fast"] = df["close"].rolling(fast).mean()
df["ma_slow"] = df["close"].rolling(slow).mean()
# Сигнал: 1 = лонг, 0 = вне рынка
df["signal"] = (df["ma_fast"] > df["ma_slow"]).astype(int)
# Сдвигаем на 1, чтобы не использовать будущее
df["position"] = df["signal"].shift(1).fillna(0)
# Дневная доходность
df["returns"] = df["close"].pct_change()
df["strategy_returns"] = df["position"] * df["returns"]
cumulative = (1 + df["strategy_returns"]).cumprod()
sharpe = df["strategy_returns"].mean() / df["strategy_returns"].std() * np.sqrt(252)
max_dd = (cumulative / cumulative.cummax() - 1).min()
return {
"total_return": cumulative.iloc[-1] - 1,
"sharpe": sharpe,
"max_drawdown": max_dd,
}
Подавайте df с колонкой close (дневные закрытия) — функция вернёт суммарный return, Sharpe и максимальную просадку. Реалистичные значения для golden cross на дневках индекса ММВБ:
total_return: 30–60% за 5 лет
sharpe: 0.3–0.5
max_drawdown: -25% до -40%
Не впечатляет — это типично. Стратегия живёт за счёт нескольких больших трендов и сливает на боковиках.
Защита от overfit: используйте walk-forward, не оптимизируйте fast/slow на одном датасете. Фиксированные 50/200 — стандарт, не оптимум, и это правильно.
Какие комбинации MA работают и почему большинство — нет
Эмпирические наблюдения по реальным тестам:
- 20/50 — слишком чувствительная пара, много ложных пересечений, плохая статистика на акциях.
- 50/200 — стандарт. Работает на сырьевых рынках, на индексах — нейтрально.
- 9/21 EMA — популярная пара у форекс-трейдеров на H1–H4. Работает в спокойных трендах, проваливается в флэте.
- 8 EMA / 200 SMA — компромисс: 8 как сигнал, 200 как фильтр. Дисциплинирует не торговать против старшего тренда.
- 3 MA cascade (50/100/200) — добавляет ещё один фильтр. Реже даёт сигналы, но они качественнее.
Главная причина, почему MA-стратегии «не работают» у новичков:
- Подбор периода под историю (overfit).
- Игнорирование комиссий — на M5 с MA(10/30) комиссии съедают всю прибыль.
- Отсутствие фильтра волатильности — на стрессовых движениях MA-сигналы дают всплеск false positives.
- Психологическое непринятие лага — трейдер закрывает позицию руками до того, как MA подаст сигнал на выход.
Где MA-стратегии не работают
- Боковики и низковолатильные периоды. Цена пилит вокруг MA, серия ложных пересечений.
- Гэповые рынки. На открытии понедельника или после новостей цена прыгает через MA, сигнал срабатывает уже после движения.
- Низколиквидные бумаги. Спред больше тиков движения — комиссии съедают edge.
- Крипто на нисходящем рынке. MA-стратегии заточены на трендовость — на крипте есть много продолжительных боковиков с резкими свечами, ломающих сигналы.
В этих условиях лучше работают mean-reversion подходы (Bollinger Bands, Z-score) или волатильные стратегии (ATR-каналы).
Частые вопросы
В чём разница между SMA и EMA?
SMA усредняет равномерно, EMA даёт больший вес свежим данным. EMA быстрее реагирует на новые движения, SMA — плавнее и устойчивее к шуму. На длинных периодах (50+) разница между ними минимальна; на коротких (5–20) EMA заметно ближе к цене.
Какой период скользящей средней лучше использовать?
Стандартные периоды: 20 для краткосрочного тренда, 50 для среднесрочного, 200 для долгосрочного. Подбирать «оптимальный» период на исторических данных — частая ошибка, ведёт к переподгонке. Лучше фиксировать стандартные значения и менять стратегию, а не параметры.
Работает ли «золотой крест» в реальном трейдинге?
Как самостоятельная стратегия — обычно нет. На индексах S&P 500 и ММВБ golden cross MA(50)/MA(200) даёт примерно нулевую доходность за счёт сильного лага. Имеет смысл использовать его как один из фильтров в составе более широкой системы, а не как единственный триггер входа.
Подходит ли стратегия скользящих средних для криптовалют?
Частично. На трендовых периодах (бычий рынок 2020–2021, медвежий 2022) MA-стратегии работают. В боковиках криптовалют — частые ложные пересечения и серии стоп-лоссов. Для крипты обычно добавляют фильтр волатильности (ATR) и не торгуют против старшего тренда.
Почему золотой крест часто запаздывает?
Потому что обе MA — лагирующие индикаторы. К моменту пересечения MA(50) уже среагировала на месяц движения, MA(200) — на год. К моменту, когда они пересекутся, рынок уже сделал значительную часть тренда. Это структурное свойство индикатора, не «ошибка» стратегии.
Что запомнить
- Скользящая средняя — лагирующий индикатор, усредняет цену за N последних свечей.
- SMA — равномерное усреднение, EMA — экспоненциальное (свежее весит больше).
- Стандартные периоды: 20, 50, 200. Подгонка периода под историю = overfit, не оптимум.
- Golden cross / death cross — известная, но статистически нейтральная стратегия. Лучше как фильтр, чем самостоятельный сигнал.
- Простая схема «лонг только при цене выше MA(200)» убирает 50% худших сделок.
- MA-стратегии работают в трендовых рынках, проваливаются в боковиках и на гэпах.
- Бэктест обязательно walk-forward, без оптимизации параметров на тесте.