Оптимизированная стратегия тренда на основе среднего истинного диапазона v6 (фиксированный захват тренда)

ATR EMA SMMA RSI TSL
Дата создания: 2025-03-31 16:50:30 Последнее изменение: 2025-03-31 16:50:41
Копировать: 0 Количество просмотров: 418
2
Подписаться
319
Подписчики

Оптимизированная стратегия тренда на основе среднего истинного диапазона v6 (фиксированный захват тренда) Оптимизированная стратегия тренда на основе среднего истинного диапазона v6 (фиксированный захват тренда)

Обзор

Это стратегия отслеживания трендов, основанная на среднем истинном диапазоне ATR, предназначенная для захвата высоковероятных сделок путем объединения нескольких технических показателей. Эта стратегия объединяет фильтры ATR, супер-трендовые индикаторы, индексные движущиеся средние EMA и SMMA, относительно сильные индексы RSI и динамическую систему остановок для предоставления всестороннего и гибкого метода торговли.

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

Основные принципы стратегии основаны на взаимодействии нескольких технических показателей:

  1. Идентификация тенденций: используйте индикатор супертенденции ((параметр: фактор 2, длина 5) и 50-дневную ЭМА и 8-дневную SMMA, чтобы определить направление тенденций на рынке. Тренды в цветовой кодировке:

    • Зеленый: тенденция к росту цен
    • Красный: нисходящий тренд
    • Серый: нейтральный период
  2. Интеллектуальная фильтрация ATR: обнаружение волатильного расширения с помощью 14 циклов ATR и 50 циклов простой движущейся средней, торговля только при повышении ATR или выше его SMA на 101%, обеспечение входа только в сильных тенденциях.

  3. Условия участия:

    • Повышенный вход: цена выше 50-дневной ЭМА, супер тренд положительный, RSI > 45, ATR подтверждает силу тренда
    • Открытие: цена ниже 50-дневной ЭМА, супертенденс понижается, RSI < 45, ATR подтверждает силу тренда
  4. Динамическая остановка и остановка:

    • Остановка: адаптивная остановка на основе 5-кратного ATR
    • Стоп-убыток: 3,5-кратный ATR
    • Стоп-лосс: запускается после движения цены в 2 раза ATR
    • Фиксированный стоп: управление риском с использованием кратного ATR в 0,8 раза

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

  1. Эффективная фильтрация рынка волатильности, избегая торговли в низко волатильных зонах
  2. Предотвращение чрезмерной торговли, предотвращение преждевременного входа через механизм блокировки.
  3. Захват сильных тенденций, отслеживание стоп-лосс позволяет сохранить прибыль
  4. Снижение отступлений, предотвращение крупных убытков в ATR
  5. Настраиваемые параметры, которые могут быть отрегулированы для различных рынков ATR, Stop Loss, Stop Stop и RSI фильтры

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

  1. Чрезмерная зависимость от технических показателей может привести к ложным сигналам
  2. Неудача в условиях нестабильного рынка
  3. Неправильная настройка параметров может увеличить стоимость сделки
  4. RSI подтверждает, что может пропустить быстрые изменения в тренде

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

  1. Внедрение алгоритмов машинного обучения, динамическая настройка параметров
  2. Добавление дополнительных фильтров, таких как подтверждение заказа
  3. Изучение оптимального сочетания параметров для разных рынков и временных рамок
  4. Разработка механизмов проверки многократных временных рамок

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

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

Исходный код стратегии
/*backtest
start: 2024-03-31 00:00:00
end: 2025-03-29 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Optimized ATR-Based Trend Strategy v6 (Fixed Trend Capture)", overlay=true)

// 🔹 Input parameters
lengthSMMA = input(8, title="SMMA Length")
lengthEMA = input(50, title="EMA Length")
supertrendFactor = input(2.0, title="Supertrend Factor")
supertrendLength = input(5, title="Supertrend Length")
atrLength = input(14, title="ATR Length")  
atrSmoothing = input(50, title="ATR Moving Average Length")  
atrMultiplierTP = input.float(5.0, title="ATR Multiplier for Take-Profit", minval=1.0, step=0.5)  
atrMultiplierTSL = input.float(3.5, title="ATR Multiplier for Trailing Stop-Loss", minval=1.0, step=0.5)  // 🔹 Increased to ride trends
atrStopMultiplier = input.float(0.8, title="ATR Stop Multiplier", minval=0.5, step=0.1)  
breakEvenMultiplier = input.float(2.0, title="Break-Even Trigger ATR Multiplier", minval=1.0, step=0.1)
rsiLength = input(14, title="RSI Length")  

// 🔹 Indicator calculations
smma8 = ta.sma(ta.sma(close, lengthSMMA), lengthSMMA)  
ema50 = ta.ema(close, lengthEMA)  

// 🔹 Supertrend Calculation
[superTrend, _] = ta.supertrend(supertrendFactor, supertrendLength)

// 🔹 Supertrend Conditions
isBullishSupertrend = close > superTrend
isBearishSupertrend = close < superTrend

// 🔹 ATR Calculation for Smarter Filtering
atrValue = ta.atr(atrLength)
atrMA = ta.sma(atrValue, atrSmoothing)
atrRising = ta.rising(atrValue, 3)  // 🔹 More sensitive ATR detection
isTrending = atrValue > atrMA * 1.01 or atrRising  // 🔹 Loosened ATR filter

// 🔹 RSI Calculation
rsi = ta.rsi(close, rsiLength)

// 🔹 RSI Conditions (More Flexible)
isRSIBullish = rsi > 45  // 🔹 Lowered to capture early trends
isRSIBearish = rsi < 45  

// 🔹 TP Lock Mechanism
var bool tpHit = false  
if strategy.position_size == 0 and strategy.closedtrades > 0
    tpHit := true  

// 🔹 Supertrend Flip Detection (Resumes Trading After Trend Change)
trendFlip = (isBullishSupertrend and not isBullishSupertrend[1]) or (isBearishSupertrend and not isBearishSupertrend[1])
if trendFlip
    tpHit := false  

// 🔹 Entry Conditions
bullishEntry = close > ema50 and isBullishSupertrend and isRSIBullish and isTrending and not tpHit
bearishEntry = close < ema50 and isBearishSupertrend and isRSIBearish and isTrending and not tpHit

// 🔹 Dynamic Take-Profit, Stop-Loss, and Break-Even Stop
longTakeProfit = close + (atrValue * atrMultiplierTP)  
shortTakeProfit = close - (atrValue * atrMultiplierTP)  
longTrailStop = atrValue * atrMultiplierTSL  
shortTrailStop = atrValue * atrMultiplierTSL  

// ✅ Adjusted SL to Reduce Drawdown
longStopLoss = close - (atrValue * atrMultiplierTSL * atrStopMultiplier)
shortStopLoss = close + (atrValue * atrMultiplierTSL * atrStopMultiplier)

// ✅ Break-Even Stop Trigger (More Room for Trends)
longBreakEven = strategy.position_avg_price + (atrValue * breakEvenMultiplier)
shortBreakEven = strategy.position_avg_price - (atrValue * breakEvenMultiplier)

// 🔹 Strategy Execution (Fixed Take-Profit & Stop-Loss)
if (bullishEntry)
    strategy.entry("Buy", strategy.long)
    strategy.exit("TSL/TP", from_entry="Buy", stop=longStopLoss, trail_offset=longTrailStop, limit=longTakeProfit)
    strategy.exit("BreakEven", from_entry="Buy", stop=longBreakEven)

if (bearishEntry)
    strategy.entry("Sell", strategy.short)
    strategy.exit("TSL/TP", from_entry="Sell", stop=shortStopLoss, trail_offset=shortTrailStop, limit=shortTakeProfit)
    strategy.exit("BreakEven", from_entry="Sell", stop=shortBreakEven)

// 🔹 Trend Band
trendColor = isBullishSupertrend and smma8 > ema50 and close > ema50 ? color.green :
             isBearishSupertrend and smma8 < ema50 and close < ema50 ? color.red : color.gray
fill(plot(smma8, color=color.new(trendColor, 60), title="8 SMMA Band"),
     plot(ema50, color=color.new(trendColor, 60), title="50 EMA Band"),
     color=color.new(trendColor, 80), title="Trend Band")

// 🔹 Supertrend Line
plot(superTrend, color=color.gray, title="Supertrend", style=plot.style_line)