Адаптивная система двойной стратегии следования за трендом и диапазонной торговли

ADX SMA BB RSI MACD ATR
Дата создания: 2025-02-21 10:14:04 Последнее изменение: 2025-02-27 17:17:45
Копировать: 1 Количество просмотров: 419
2
Подписаться
319
Подписчики

Адаптивная система двойной стратегии следования за трендом и диапазонной торговли Адаптивная система двойной стратегии следования за трендом и диапазонной торговли

Обзор

Стратегия представляет собой адаптивную торговую систему, объединяющую трендовый отслеживание и промежуточную торговлю. Система использует динамические индикаторы ADX для идентификации состояния рынка и использует различные торговые стратегии в трендовом и шокирующем рынках. В трендовом рынке стратегия использует перекрестный сигнал с перемещающейся средней в сочетании с подтверждением RSI и MACD; в шокирующем рынке стратегия использует прорыв буринской ленты в сочетании с RSI, чтобы совершить перепродажу. Система также включает динамический стоп-стоп на основе ATR, эффективно контролируя риск.

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

В основе стратегии лежит механизм распознавания состояния рынка. Стратегия отслеживания трендов запускается, когда ADX больше 25 и определяется как трендовый рынок:

  1. Многоглавое условие: 50-дневная средняя линия проходит через 200-дневную среднюю линию, в то время как RSI больше 50 и MACD-линия выше сигнальной линии
  2. Поверхностные условия: 50-дневная средняя линия проходит под 200-дневную среднюю линию, при этом RSI меньше 50 и линия MACD ниже линии сигнала

Когда ADX меньше или равно 25, используйте стратегию промежуточного трейдинга:

  1. Многоглазые условие: цены вверх и вниз по Бринской полосе и RSI меньше 40
  2. Поверхностное условие: цена ниже прорыва Брин-полосы и RSI больше 60

Стоп-убыток устанавливается с использованием динамического множителя ATR, стоп-убыток - в 1,5 раза ATR, стоп-убыток - в 3 раза ATR.

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

  1. Рыночная адаптивность: способность автоматически переключаться на торговые стратегии в зависимости от состояния рынка
  2. Подтверждение множественных сигналов: снижение ложных сигналов путем комбинирования нескольких технических показателей
  3. Совершенствование управления рисками: использование динамического механизма остановки убытков для адаптации к рыночным колебаниям
  4. Ясная логика стратегии: четкие критерии оценки тенденций и диапазонов, позволяющие оптимизировать корректировку
  5. Хорошая визуализация: можно увидеть состояние рынка по цвету фона

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

  1. Задержка сигналов: такие показатели, как скользящие средние, имеют некоторую задержку и могут пропустить лучшую точку входа
  2. Риск ложного прорыва: Брин может дать ложный сигнал в условиях нестабильных рынков
  3. Чувствительность параметров: параметры, такие как ADX, ATR, могут влиять на эффективность стратегии
  4. Риск переключения рынка: возможные ошибочные сигналы в переходный период между тенденциями и колебаниями
  5. Риск остановки: остановка ATR с фиксированным множителем может быть слишком большой в периоды высокой волатильности

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

  1. Введение анализа трафика: добавление фактора трафика в подтверждение сигнала, повышение надежности сигнала
  2. Оптимизация оценки состояния рынка: можно рассмотреть возможность изменения ADX в динамическую убыль или в сочетании с другими показателями
  3. Усовершенствование механизма остановки убытков: введение следящих остановок или динамическая коррекция ATR-множителей в зависимости от волатильности
  4. Добавление временной фильтрации: добавление ограничений на торговые периоды, чтобы избежать периодов низкой ликвидности
  5. Улучшение механизма подтверждения сигнала: можно рассмотреть возможность включения анализа ценовой структуры для улучшения качества сигнала

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

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

Исходный код стратегии
/*backtest
start: 2024-09-01 00:00:00
end: 2025-02-19 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Trend vs Range Trading - Fully Fixed for v6", overlay=true)

// 🔹 Moving Averages (SMA 50 & 200)
sma50 = ta.sma(close, 50)
sma200 = ta.sma(close, 200)

// 🔹 Proper ADX Calculation (With Corrected ta.dmi() Parameters)
dmiLength = 14
adxSmoothing = 14
[dmiPlus, dmiMinus, adx] = ta.dmi(dmiLength, adxSmoothing)

// 🔹 Bollinger Bands Calculation (Fixed for v6)
bb_length = 20
bb_mult = 2.0
bb_basis = ta.sma(close, bb_length)
bb_dev = ta.stdev(close, bb_length)
bb_upper = bb_basis + (bb_mult * bb_dev)
bb_lower = bb_basis - (bb_mult * bb_dev)

// 🔹 Additional Indicators (RSI & MACD)
rsi = ta.rsi(close, 14)
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)

// 🔹 ATR for Stop Loss & Take Profit
atr = ta.atr(14)
stop_loss_mult = 1.5  // Stop Loss Multiplier
take_profit_mult = 3.0  // Take Profit Multiplier

// 🔹 Trend vs Range Market Detection
is_trending = adx > 25

// 🔹 Trend Following Strategy (SMA Cross & Confirmation)
long_condition_trend = is_trending and ta.crossover(sma50, sma200) and rsi > 50 and macdLine > signalLine
short_condition_trend = is_trending and ta.crossunder(sma50, sma200) and rsi < 50 and macdLine < signalLine

// 🔹 Range Trading Strategy (Bollinger Bands & RSI Confirmation)
long_condition_range = not is_trending and ta.crossover(close, bb_lower) and rsi < 40
short_condition_range = not is_trending and ta.crossunder(close, bb_upper) and rsi > 60

// 🔹 Stop Loss & Take Profit Calculations
long_stop_loss = close - (atr * stop_loss_mult)
long_take_profit = close + (atr * take_profit_mult)
short_stop_loss = close + (atr * stop_loss_mult)
short_take_profit = close - (atr * take_profit_mult)

// 🔹 Execute Trades (With Stop Loss & Take Profit)
if long_condition_trend
    strategy.entry("Long_Trend", strategy.long)
    strategy.exit("Exit_Long_Trend", from_entry="Long_Trend", stop=long_stop_loss, limit=long_take_profit)

if short_condition_trend
    strategy.entry("Short_Trend", strategy.short)
    strategy.exit("Exit_Short_Trend", from_entry="Short_Trend", stop=short_stop_loss, limit=short_take_profit)

if long_condition_range
    strategy.entry("Long_Range", strategy.long)
    strategy.exit("Exit_Long_Range", from_entry="Long_Range", stop=long_stop_loss, limit=long_take_profit)

if short_condition_range
    strategy.entry("Short_Range", strategy.short)
    strategy.exit("Exit_Short_Range", from_entry="Short_Range", stop=short_stop_loss, limit=short_take_profit)

// 🔹 Visual Indicators & Background Color (Trend vs Range)
bgcolor(is_trending ? color.green : color.blue)

// 🔹 Plot Moving Averages & Bollinger Bands
plot(sma50, color=color.blue, title="SMA 50")
plot(sma200, color=color.red, title="SMA 200")
plot(bb_upper, color=color.green, title="BB Upper")
plot(bb_lower, color=color.orange, title="BB Lower")