Поиск по материалам

Стратегия скользящих средних: 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-стратегии «не работают» у новичков:

  1. Подбор периода под историю (overfit).
  2. Игнорирование комиссий — на M5 с MA(10/30) комиссии съедают всю прибыль.
  3. Отсутствие фильтра волатильности — на стрессовых движениях MA-сигналы дают всплеск false positives.
  4. Психологическое непринятие лага — трейдер закрывает позицию руками до того, как 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, без оптимизации параметров на тесте.
скользящие средние SMA EMA технический анализ стратегии