Торговая стратегия с многопериодной скользящей средней и точкой поворота тренда

SMA MA 移动均线 趋势跟踪 回踩策略 止损 趋势反转 多周期分析 动量指标 波动率
Дата создания: 2025-07-08 13:40:33 Последнее изменение: 2025-07-08 13:40:33
Копировать: 0 Количество просмотров: 227
2
Подписаться
319
Подписчики

Торговая стратегия с многопериодной скользящей средней и точкой поворота тренда Торговая стратегия с многопериодной скользящей средней и точкой поворота тренда

Обзор

Многоциклическая подвижная средняя стратегия - это система количественного трейдинга, основанная на простой подвижной средней (SMA), которая сочетает в себе четыре основных элемента: подтверждение тренда, уклон средней, ценовое отступление и волатильное остановка. Эта стратегия использует подвижные средние для мониторинга различных циклов (9, 20, 50, 100 и 200) для выявления возможности для ценового отступления в условиях сильного тренда и использования исторических волатильных настроек для определения точного места остановки.

Стратегический принцип

Принцип действия стратегии основан на многоуровневой системе условного отбора:

  1. Условия подтверждения тренда:

    • Многосторонние тренды требуют, чтобы цены находились выше 20- и 200-дневных средних линий (trendUp)
    • Поверхностный тренд требует, чтобы цена находилась ниже 20- и 200-дневных средних линий (TrendDown)
  2. Условия средней строки:

    • Многоголосное требование 20-дневная средняя линия находится выше 200-дневная средняя линия (smaOrderUp)
    • Пустота требует, чтобы 20-дневная средняя линия находилась ниже 200-дневная средняя линия (smaOrderDown)
  3. Условия скольжения:

    • Склонность рассчитывается путем сравнения текущего среднего значения с средним значением 5 циклов назад
    • Многоглазые требует, чтобы 20-й и 200-й среднелинейные скольжения были положительными ((slopeUp)
    • Порог требует, чтобы 20-й и 200-й среднелинейные уклоны были отрицательными (slopeDown)
  4. Условия возвращения:

    • pullbackUp - требование, чтобы цена предыдущего цикла была ниже 20-дневного среднего, а текущая цена была выше 20-дневного среднего
    • Пульбэк - требование о том, что цена предыдущего цикла была выше 20-дневного среднего, а текущая цена упала ниже 20-дневного среднего ((pullbackDown)
  5. Параметры остановки:

    • Большинство голов используют минимальную точку за последние 10 циклов в качестве стоп-стопа (swingLow)
    • Пустой конец использует максимальные точки за последние 10 циклов в качестве остановки

Когда все соответствующие условия одновременно удовлетворены, стратегия посылает сигналы о многоголовном или пустом голове и устанавливает соответствующую позицию стоп-лосса.

Стратегические преимущества

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

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

  3. Динамический механизм остановки убытковСтоп-стоп, основанный на реальных колебаниях рынка, лучше адаптируется к различным рыночным условиям и колебаниям, чем стоп-стоп с фиксированными точками.

  4. Механизм многократного подтвержденияСнижение вероятности ложного сигнала путем комбинирования нескольких условий, таких как пересечение средней линии, положение цены, направление наклонности.

  5. Легко понять и оптимизировать: логика стратегии четкая и интуитивная, параметры меньше и каждый имеет четкую роль, что позволяет оптимизировать корректировку в соответствии с различными характеристиками рынка.

Стратегический риск

  1. Проблема задержки средней линии: Движущаяся средняя линия по своей сути является отстающим индикатором, который может привести к задержке сигнала, пропуску оптимальной точки входа или созданию отсталых остановок в сильно волатильных рынках. Решение заключается в рассмотрении введения более чувствительных индикаторов, таких как EMA или VWMA, в качестве дополнения.

  2. Возвращение к глубине неопределенностиПрименение стратегии не позволяет прогнозировать глубину отступления, иногда цена может восстановить тренд до того, как она достигнет 20-дневного среднего уровня, что приводит к пропущенным торговым возможностям. Можно рассмотреть возможность добавления динамического регионального суждения на основе ATR, а не одной ценовой линии.

  3. Продолжающийся риск потери: В волатильных рынках частое пересечение средней линии может привести к последовательным стоп-убыткам. Рекомендуется увеличить фильтр волатильности, изменить параметры стратегии или приостановить торговлю в условиях высокой волатильности.

  4. Параметр Чувствительность: Стратегия чувствительна к среднелинейным циклам и обратным параметрам. Разные рынки и временные рамки могут требовать разных параметров. Рекомендуется определить наиболее подходящий для конкретной торговой разновидности набор параметров путем обратной оценки.

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

Направление оптимизации стратегии

  1. Адаптационные параметрыМожно рассмотреть возможность автоматической корректировки среднелинейного цикла и периода скольжения в зависимости от волатильности рынка, чтобы стратегия поддерживала оптимальную производительность в различных рыночных условиях. Например, можно использовать более короткий среднелинейный цикл в низковолатильных рынках и более длительный цикл в высоковолатильных рынках.

  2. Добавить условия фильтрацииВведение относительно сильного (RSI) или случайного (Stochastic) индикатора в качестве вспомогательного фильтра, который подтверждает обратный сигнал только в зоне перекупа/перепродажи, что еще больше уменьшает ложный сигнал.

  3. Динамическое управление позициями: корректировка размеров позиций в зависимости от волатильности и интенсивности тренда, увеличение позиций в условиях низкой волатильности в сильных тенденциях, уменьшение позиций в условиях высокой волатильности в слабых тенденциях, оптимизация эффективности капитала.

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

  5. Настройка целевой прибылиПримечание: существующие стратегии имеют только стоп-лосс настройки без целевой прибыли, можно рассматривать динамическую целевую прибыль, основанную на ATR или на ключевых сопротивлениях/поддержках, для оптимизации коэффициента возврата риска.

  6. Добавление классификации состояния рынка: введение оценки состояния рынка ((тренды, колебания, прорывы), использование различных параметров или логики торговли для различных состояний рынка.

Подвести итог

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

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

Исходный код стратегии
/*backtest
start: 2025-01-01 00:00:00
end: 2025-07-05 10:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("SMA Pullback Strategy with Swing SL", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === SMA Definitions ===
sma9   = ta.sma(close, 9)
sma20  = ta.sma(close, 20)
sma50  = ta.sma(close, 50)
sma100 = ta.sma(close, 100)
sma200 = ta.sma(close, 200)

// === Inputs ===
slopeLookback  = input.int(5, title="Slope Lookback")
swingLookback  = input.int(10, title="Swing High/Low Period")

// === Slope Calculation ===
slope20  = sma20 - sma20[slopeLookback]
slope200 = sma200 - sma200[slopeLookback]

// === Long Conditions ===
trendUp     = close > sma20 and close > sma200
smaOrderUp  = sma20 > sma200
slopeUp     = slope20 > 0 and slope200 > 0
pullbackUp  = close[1] < sma20[1] and close > sma20
swingLow    = ta.lowest(low, swingLookback)

longCondition = trendUp and smaOrderUp and slopeUp and pullbackUp

// === Short Conditions ===
trendDown     = close < sma20 and close < sma200
smaOrderDown  = sma20 < sma200
slopeDown     = slope20 < 0 and slope200 < 0
pullbackDown  = close[1] > sma20[1] and close < sma20
swingHigh     = ta.highest(high, swingLookback)

shortCondition = trendDown and smaOrderDown and slopeDown and pullbackDown

// === Strategy Entries & Exits ===
if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", from_entry="Long", stop=swingLow)

if (shortCondition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", from_entry="Short", stop=swingHigh)

// === Plotting SMAs ===
plot(sma9,   title="SMA 9",   color=color.gray)
plot(sma20,  title="SMA 20",  color=color.orange)
plot(sma50,  title="SMA 50",  color=color.purple)
plot(sma100, title="SMA 100", color=color.green)
plot(sma200, title="SMA 200", color=color.blue)

// === Plot Entry Signals ===
plotshape(longCondition,  title="Buy Signal",  location=location.belowbar, color=color.green, style=shape.triangleup,   size=size.small)
plotshape(shortCondition, title="Sell Signal", location=location.abovebar, color=color.red,   style=shape.triangledown, size=size.small)