Система торговли по тренду с несколькими таймфреймами (MTF-ATR-MACD)

EMA RSI ATR MACD MTF SL TP
Дата создания: 2024-11-25 14:42:33 Последнее изменение: 2024-11-25 14:42:33
Копировать: 4 Количество просмотров: 540
1
Подписаться
1617
Подписчики

Система торговли по тренду с несколькими таймфреймами (MTF-ATR-MACD)

Обзор

Стратегия представляет собой комплексную систему торговли с отслеживанием тенденций, которая сочетает в себе анализ нескольких временных рамок, систему средних линий, динамические индикаторы и индикаторы волатильности. Система идентифицирует направление тенденции путем перекрестного использования краткосрочных и долгосрочных скользящих средних показателей (EMA), использует относительно сильный индикатор (RSI) для суждения о перепродаже, в сочетании с MACD для подтверждения динамики и использования более высоких временных рамок.

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

Стратегия использования многоуровневых механизмов проверки для принятия решений о сделках:

  1. Тренд-идентификационный слой: использование перекрестных 9- и 21-часовых ЭМА для улавливания изменений тренда
  2. Удостоверение динамики: перекрестная и направленная проверка динамики тренда с помощью MACD-индикатора ((12, 26, 9)
  3. Фильтрация на перекуп и перепродажу: используйте RSI ((14) для фильтрации на уровне 7030
  4. Подтверждение высоких временных рамок: выборочное использование EMA на уровне солнечной линии в качестве фильтра тренда
  5. Управление рисками: использование 1,5-кратного ATR для отслеживания стоп-лосса, 2-кратный ATR для установки целевого прибыли

Система открывает позиции только после удовлетворения нескольких условий: пересечение EMA, RSI не достигает предельных значений, MACD направлен в правильном направлении и подтверждение высокой тенденции временных рамок. Выход используется в сочетании с отслеживанием стоп-лосс и фиксированной целью прибыли.

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-24 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5 
strategy("Trend Following with ATR, MTF Confirmation, and MACD", overlay=true)

// Parameters
emaShortPeriod = input.int(9, title="Short EMA Period", minval=1)
emaLongPeriod = input.int(21, title="Long EMA Period", minval=1)
rsiPeriod = input.int(14, title="RSI Period", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought", minval=50)
rsiOversold = input.int(30, title="RSI Oversold", minval=1)
atrPeriod = input.int(14, title="ATR Period", minval=1)
atrMultiplier = input.float(1.5, title="ATR Multiplier", minval=0.1)
takeProfitATRMultiplier = input.float(2.0, title="Take Profit ATR Multiplier", minval=0.1)

// Multi-timeframe settings
htfEMAEnabled = input.bool(true, title="Use Higher Timeframe EMA Confirmation?", inline="htf")
htfEMATimeframe = input.timeframe("D", title="Higher Timeframe", inline="htf")

// MACD Parameters
macdShortPeriod = input.int(12, title="MACD Short Period", minval=1)
macdLongPeriod = input.int(26, title="MACD Long Period", minval=1)
macdSignalPeriod = input.int(9, title="MACD Signal Period", minval=1)

// Select trade direction
tradeDirection = input.string("Both", title="Trade Direction", options=["Both", "Long", "Short"])

// Calculating indicators
emaShort = ta.ema(close, emaShortPeriod)
emaLong = ta.ema(close, emaLongPeriod)
rsiValue = ta.rsi(close, rsiPeriod)
atrValue = ta.atr(atrPeriod)

// Calculate MACD
[macdLine, macdSignalLine, _] = ta.macd(close, macdShortPeriod, macdLongPeriod, macdSignalPeriod)

// Higher timeframe EMA confirmation
htfEMALong = request.security(syminfo.tickerid, htfEMATimeframe, ta.ema(close, emaLongPeriod))

// Trading conditions
longCondition = ta.crossover(emaShort, emaLong) and rsiValue < rsiOverbought and (not htfEMAEnabled or close > htfEMALong) and macdLine > macdSignalLine
shortCondition = ta.crossunder(emaShort, emaLong) and rsiValue > rsiOversold and (not htfEMAEnabled or close < htfEMALong) and macdLine < macdSignalLine

// Plotting EMAs
plot(emaShort, title="EMA Short", color=color.green)
plot(emaLong, title="EMA Long", color=color.red)

// Plotting MACD
hline(0, "Zero Line", color=color.gray)
plot(macdLine - macdSignalLine, title="MACD Histogram", color=color.green, style=plot.style_histogram)
plot(macdLine, title="MACD Line", color=color.blue)
plot(macdSignalLine, title="MACD Signal Line", color=color.red)

// Trailing Stop-Loss and Take-Profit levels
var float trailStopLoss = na
var float trailTakeProfit = na

if (strategy.position_size > 0) // Long Position
    trailStopLoss := na(trailStopLoss) ? close - atrValue * atrMultiplier : math.max(trailStopLoss, close - atrValue * atrMultiplier)
    trailTakeProfit := close + atrValue * takeProfitATRMultiplier
    strategy.exit("Exit Long", "Long", stop=trailStopLoss, limit=trailTakeProfit, when=shortCondition)

if (strategy.position_size < 0) // Short Position
    trailStopLoss := na(trailStopLoss) ? close + atrValue * atrMultiplier : math.min(trailStopLoss, close + atrValue * atrMultiplier)
    trailTakeProfit := close - atrValue * takeProfitATRMultiplier
    strategy.exit("Exit Short", "Short", stop=trailStopLoss, limit=trailTakeProfit, when=longCondition)

// Strategy Entry
if (longCondition and (tradeDirection == "Both" or tradeDirection == "Long"))
    strategy.entry("Long", strategy.long)
    
if (shortCondition and (tradeDirection == "Both" or tradeDirection == "Short"))
    strategy.entry("Short", strategy.short)

// Plotting Buy/Sell signals
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Plotting Trailing Stop-Loss and Take-Profit levels
plot(strategy.position_size > 0 ? trailStopLoss : na, title="Long Trailing Stop Loss", color=color.red, linewidth=2, style=plot.style_line)
plot(strategy.position_size < 0 ? trailStopLoss : na, title="Short Trailing Stop Loss", color=color.green, linewidth=2, style=plot.style_line)
plot(strategy.position_size > 0 ? trailTakeProfit : na, title="Long Take Profit", color=color.blue, linewidth=2, style=plot.style_line)
plot(strategy.position_size < 0 ? trailTakeProfit : na, title="Short Take Profit", color=color.orange, linewidth=2, style=plot.style_line)