
Обзор
Стратегия подтверждения трендов MACD с множественным возвратом к средним линиям - это система торговли трендами, которая сочетает в себе систему равнолинейных трендов, ценовую регрессию и индикатор MACD. Основная идея этой стратегии заключается в поиске торговых возможностей, близких к возврату цены к долгосрочной средней линии (средняя линия 200⁄250), и использовании индикатора MACD в качестве входного сигнала подтверждения. Стратегия одновременно использует множественные скрытые равнолинейные тренды в качестве вспомогательных условий отбора, а также динамические установки стоп-лоса и фиксированных рисков на основе ATR, чтобы сформировать целостную торговую систему.
Стратегический принцип
Эта стратегия основана на следующих ключевых принципах:
- Определение тренда: использование 20-го среднего уровня и 250-го среднего уровня для определения общей тенденции рынка. Когда 20-й средний уровень находится выше 250-го среднего уровня, считается, что рынок находится в восходящем тренде; когда 20-й средний уровень находится ниже 250-го среднего уровня, считается, что рынок находится в нисходящем тренде.
- Возвращение цены: стратегия ищет возможности для входа только в том случае, если цена возвращается к долгосрочной средней линии (средняя линия 250 дней), что основано на теории возврата средней стоимости, согласно которой “цены в конечном итоге возвращаются к средней линии”.
- Условия входа: с помощью MACD-креста в качестве входного сигнала, в сочетании с фильтрацией равнолинейного положения.
- Фильтрация скрытых средних линий: Стратегия использует три дополнительных “скрытых средних линий” (средние линии за 2, 100 и 300 дней) для создания входных окон, требующих, чтобы цена находилась между определенными средними линиями.
- Управление рисками: использование динамического остановки, основанной на ATR, с по умолчанию 5-кратным значением ATR и автоматическим расчетом целевой прибыли с помощью заранее установленного коэффициента возврата риска (по умолчанию 1.5).
Условия участия:
- Средняя линия 20 находится выше средней линии 250 (подтверждение восходящего тренда)
- 2-дневная средняя линия находится выше 300-дневной средней линии и 2-дневная средняя линия находится ниже 100-дневная средняя линия ((область подтверждения возвращения цены)
- MACD-линия через сигнальную линию (подтверждение изменения динамики)
Условия приема:
- Средняя линия 20 находится ниже средней линии 250 (подтверждена тенденция к снижению)
- 2 дневная средняя линия находится ниже 300 дневная средняя линия и 2 дневная средняя линия находится выше 100 дневная средняя линия ((область подтверждения возвращения цены)
- MACD вниз по сигнальной линии (подтверждение изменения динамики)
Стратегические преимущества
- Следование тренду в сочетании с отклонением: стратегия уважает направление среднесрочной и долгосрочной тенденции (с помощью средней линии 20⁄250), но также может захватить более выгодные точки входа во время ценового отклонения, снижая риск отмены или зачета.
- Точная зона входа: создание относительно точного окна входа, уменьшая ошибочные сигналы, путем комбинированной фильтрации с помощью множественных равномерных линий.
- Динамическое управление рисками: установка стоп-убытков на основе ATR позволяет стратегии автоматически корректировать рисковые пороги в зависимости от волатильности рынка, устанавливая более свободные стоп-убытки в высоковолатильных рынках и более жесткие стоп-убытки в низковолатильных рынках.
- Систематизированная цель получения прибыли: избежание субъективного суждения путем автоматического расчета целевой цены по сравнению с предполагаемой отдачей от риска.
- Механизм фильтрации сигнала: перекрестная проверка множества условий (положение равновесия + перекрестная MACD) снижает вероятность ложного сигнала.
- Визуальная помощь: стратегия позволяет трейдерам визуально идентифицировать возможности входа, используя цветовую маркировку фона при выполнении условий входа.
Стратегический риск
- Задержка средней линии: средняя линия, по сути, является отсталой индикатором, которая может не реагировать на изменения цены вовремя в быстро меняющихся рынках, что приводит к задержке входящего и исходящего сигнала. Решение: можно рассмотреть возможность корректировки параметров средней линии, например, с использованием более короткой EMA1 или использованием более весомой средней линии, такой как средняя линия Hull.
- Сложные условия приводят к редкости торговых возможностей: Складывание множества условий входа может привести к относительной редкости реальных торговых сигналов, особенно на волатильных рынках. Решение: можно оптимизировать условия входа в зависимости от различных рыночных условий или добавить дополнительную логику входа.
- Ограничения фиксированного риска-возврата: заданный фиксированный риска-возврата может не подходить для всех рыночных условий, может быть преждевременной прибылью при сильных тенденциях, а в волатильных рынках может привести к тому, что целевая цена будет трудно достигнута. Способы решения: можно рассмотреть возможность динамической корректировки риска-возврата, или реализовать стратегию пополнения прибыли.
- Чувствительны к изменениям параметров: стратегия использует несколько средних линий и MACD-параметров, избыточная оптимизация может привести к риску пересочетания. Решение: провести тестирование стабильности, чтобы гарантировать стабильность стратегии при незначительных изменениях параметров.
- Отсутствие фильтров на рыночную среду: стратегия не идентифицирует механизмы общей рыночной среды (например, интенсивность тренда, диапазон колебаний и т. Д.), которые могут генерировать сигналы в неблагоприятных рыночных условиях. Решение: добавление фильтров на рыночную среду, таких как индикатор ADX, который определяет интенсивность тренда или контролирует понижение колебаний.
Направление оптимизации стратегии
- Динамическая корректировка рисково-возвратного соотношения: рисково-возвратное соотношение может автоматически корректироваться в зависимости от волатильности рынка или силы тренда, например, использование более высокого рисково-возвратного соотношения на рынке с сильной тенденцией, использование более низкого рисково-возвратного соотношения на рынке с волатильностью. Это позволяет лучше адаптироваться к различным рыночным условиям, повышая адаптивность стратегии.
- Добавление фильтрации на рыночные условия: введение дополнительных показателей, таких как ADX (средний индикатор тренда), для оценки силы тренда, совершение торговли только при четкой тенденции. Можно также оценивать волатильность на основе VIX или ATR-диапазона, чтобы избежать торговли на рынках с чрезмерной волатильностью или недостаточной волатильностью.
- Стратегия получения прибыли в группах: может быть реализована стратегия получения прибыли в группах, например, при достижении 0.5R, 1R и конечных целей отдельно откладывается часть позиций, таким образом, можно как заблокировать часть прибыли, так и позволить некоторым позициям продолжать получать потенциальную прибыль.
- Улучшение системы средних линий: можно попробовать использовать адаптивные средние линии, такие как KAMA (коффманская адаптивная подвижная средняя) или Hull, вместо стандартных средних линий EMA, чтобы уменьшить задержку средних линий и повысить скорость реагирования на изменения цен.
- Интегрированное подтверждение трафика: увеличение условий подтверждения трафика при генерации входящего сигнала, например, требует увеличения трафика при перекрестке MACD, повышая надежность сигнала.
- Добавление временного фильтра: можно добавить временный фильтр, чтобы избежать торговли в более волатильные или менее ликвидные периоды времени, например, за час до открытия или закрытия рынка.
- Оптимизированный механизм остановки убытков: можно осуществлять отслеживание остановки убытков, а не фиксированные остановки, особенно после того, как прибыль достигает определенного уровня, чтобы максимизировать защиту уже прибыльной прибыли.
Подвести итог
Стратегия подтверждения тренда MACD с множественным возвратом к средним линиям - это комплексная торговая система, объединяющая различные методы технического анализа. Основная ее преимущество заключается в сочетании тенденционного суждения, теории ценового возврата, подтверждения динамики и систематизации управления рисками. Стратегия определяет направление общей тенденции с помощью системы средних линий, ищет высокие шансы на выигрыш через механизм возврата цены к долгосрочным средним линиям и использует MACD в качестве сигнала подтверждения динамики для уменьшения ложных сигналов.
Эта стратегия особенно подходит для средне- и долгосрочных трендовых рынков, где в условиях сильной тенденции есть возможность продолжать движение в направлении тенденции после корректировки цены. Однако, стратегия также имеет потенциальные риски, такие как задержка средней линии, редкость торговых возможностей, которые необходимо оптимизировать с помощью фильтрации рыночной среды и управления динамическими рисками.
С помощью добавления механизмов фильтрации рыночной среды, динамической корректировки коэффициента возврата риска и улучшения равнолинейной системы эта стратегия может быть еще более стабильной и адаптивной, чтобы стать более всеобъемлющей и эффективной торговой системой. Для инвесторов, стремящихся к систематизации торговли, эта стратегия, объединяющая несколько технических показателей и имеющая полную систему управления рисками, предоставляет полезную торговую структуру.
Исходный код стратегии
/*backtest
start: 2025-01-01 00:00:00
end: 2025-03-27 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Price Near 200 EMA", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === User Inputs ===
ema1Length = input(20, title="EMA 1 Length") // Main EMA (Trend)
ema2Length = input(250, title="EMA 2 Length") // Long-term EMA
macdFastLength = input(12, title="MACD Fast Length")
macdSlowLength = input(26, title="MACD Slow Length")
macdSignalLength = input(9, title="MACD Signal Length")
rrRatio = input.float(1.5, title="Risk to Reward Ratio", minval=1, step=0.1)
atrMultiplier = input.float(5, title="ATR Multiplier for SL", minval=1, step=0.1) // Default to 5x ATR
atrLength = input(14, title="ATR Length") // User-defined ATR length
// === Hidden EMA Lengths (Hardcoded) ===
ema3Length = 2 // Fast EMA (Hidden)
ema4Length = 100 // Medium EMA (Hidden)
ema5Length = 300 // Long EMA (Hidden)
// === EMA Calculations ===
ema1 = ta.ema(close, ema1Length) // 20 EMA
ema2 = ta.ema(close, ema2Length) // 250 EMA
ema3 = ta.ema(close, ema3Length) // 2 EMA (Hidden)
ema4 = ta.ema(close, ema4Length) // 100 EMA (Hidden)
ema5 = ta.ema(close, ema5Length) // 300 EMA (Hidden)
// === MACD Calculation ===
[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength)
macdBullish = ta.crossover(macdLine, signalLine)
macdBearish = ta.crossunder(macdLine, signalLine)
// === ATR for Dynamic Stop Loss ===
atrValue = ta.atr(atrLength)
// === Long Conditions ===
bullishCondition1 = ema1 > ema2
bullishCondition2 = ema3 > ema5 and ema3 < ema4
bullishEntry = bullishCondition1 and bullishCondition2 and macdBullish
// === Short Conditions ===
bearishCondition1 = ema1 < ema2
bearishCondition2 = ema3 < ema5 and ema3 > ema4
bearishEntry = bearishCondition1 and bearishCondition2 and macdBearish
// === Calculate Stop Loss and Target Using ATR ===
longStopLoss = close - atrValue * atrMultiplier
longTargetPrice = close + (close - longStopLoss) * rrRatio
shortStopLoss = close + atrValue * atrMultiplier
shortTargetPrice = close - (shortStopLoss - close) * rrRatio
// === Entry and Exit Logic ===
if bullishEntry
strategy.entry("Buy", strategy.long)
strategy.exit("TP Long", "Buy", limit=longTargetPrice, stop=longStopLoss, comment="SL/TP Long")
if bearishEntry
strategy.entry("Sell", strategy.short)
strategy.exit("TP Short", "Sell", limit=shortTargetPrice, stop=shortStopLoss, comment="SL/TP Short")
// === Plotting Only Visible EMAs ===
plot(ema1, title="EMA 1", color=color.blue)
plot(ema2, title="EMA 2", color=color.red)
// === Background Highlight for Entries ===
bgcolor(bullishEntry ? color.new(color.green, 90) : na, title="Bullish Background")
bgcolor(bearishEntry ? color.new(color.red, 90) : na, title="Bearish Background")