Honey Trend ATR Breakout Strategy - это среднесрочная стратегия, основанная на индикаторе ATR и полосах Боллинджера для генерации торговых сигналов. Она в основном отслеживает изменения тренда цен на акции в пределах определенной ширины верхнего и нижнего каналов ATR. Когда цены проходят через нижний или верхний рельс, в сочетании с фильтрацией тренда, она принимает торговые решения.
Стратегия состоит из трех основных частей:
ATR Channel: Вычислить диапазон колебаний цен на акции с помощью индикатора ATR и сформировать канал вверх и вниз в пределах этого диапазона.
Медлинная линия: средняя линия цен на акции, используемая в качестве базовой.
Фильтрация трендов: вычисляет ценовую тенденцию с помощью индикатора DMI и устанавливает цикл сигналов. Когда pricesig
Конкретная логика генерации торговых сигналов:
Длинный сигнал: pricesig
Короткий сигнал: pricesig
Никакой торговли в других ситуациях.
Стратегия также устанавливает условия остановки прибыли и остановки убытков для контроля рисков торговли.
Стратегия прорыва Honey Trend ATR имеет следующие преимущества:
использовать индикатор ATR для расчета диапазона колебаний цен на акции, который может динамически отражать изменения рынка;
Объединить среднюю линию для оценки боковых колебаний цен на акции и установить торговые точки прорыва канала, чтобы избежать преследования максимумов и уничтожения минимумов;
Индикатор DMI используется для определения тренда и предотвращения торговли против тренда, улучшая показатель выигрыша;
Установление условий остановки прибыли и остановки убытков для контроля риска единой торговли;
Параметры стратегии достаточно гибкие для оптимизации стратегии путем корректировки ширины канала, цикла ATR и других факторов.
Стратегия также сопряжена с некоторыми рисками:
Среднесрочная торговля имеет относительно большие колебания и высокие риски.
Расчет диапазона каналов ATR может быть неточным, когда цены на акции резко колеблются, что легко приводит к неправильным сделкам.
Индикатор DMI также может совершать ошибки в оценке тренда, что влияет на точность торговых сигналов.
В ответ на вышеуказанные риски, такие параметры, как канал ATR могут быть скорректированы и циклы сигнала могут быть увеличены для оптимизации и улучшения.
Стратегия может быть оптимизирована в следующих аспектах:
Регулировать ширину канала ATR путем изменения разделителя вверх или вниз для сжатия или расширения диапазона канала.
Регулировать параметр цикла обратного обзора ATR для изменения чувствительности канала к недавним колебаниям.
Настройка параметра цикла сигналов тренда для улучшения точности суждений о бычьем и медвежьем тренде.
Добавление других показателей для многофакторной проверки для улучшения качества сигнала.
Оптимизировать алгоритмы остановки прибыли и остановки убытков для улучшения контроля рисков.
Медовый тренд ATR Breakout Стратегия интегрирует анализ диапазона колебаний цен и показателей оценки тренда. В то время как захват рыночных горячих точек, он также контролирует торговые риски. Это гибкая и адаптивная количественная стратегия. Эта стратегия может быть постоянно улучшена посредством корректировки параметров и оптимизации сигнала, с широкими перспективами применения.
/*backtest start: 2023-11-01 00:00:00 end: 2023-11-30 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title="Strategy - Bobo PATR Swing", overlay=true, default_qty_type = strategy.fixed, default_qty_value = 1, initial_capital = 10000) // === STRATEGY RELATED INPUTS AND LOGIC === PivottimeFrame = input(title="Pivot Timeframe", defval="D") ATRSDtimeFrame = input(title="ATR Band Timeframe (Lower timeframe = wider bands)", defval="D") len = input(title="ATR lookback (Lower = bands more responsive to recent price action)", defval=13) myatr = atr(len) dailyatr = request.security(syminfo.tickerid, ATRSDtimeFrame, myatr[1]) atrdiv = input(title="ATR divisor (Lower = wider bands)", type=float, defval=2) pivot0 = (high[1] + low[1] + close[1]) / 3 pivot = request.security(syminfo.tickerid, PivottimeFrame, pivot0) upperband1 = (dailyatr / atrdiv) + pivot lowerband1 = pivot - (dailyatr / atrdiv) middleband = pivot // == TREND CALC === i1=input(2, "Momentum Period", minval=1) //Keep at 2 usually i2=input(20, "Slow Period", minval=1) i3=input(5, "Fast Period", minval=1) i4=input(3, "Smoothing Period", minval=1) i5=input(4, "Signal Period", minval=1) i6=input(50, "Extreme Value", minval=1) hiDif = high - high[1] loDif = low[1] - low uDM = hiDif > loDif and hiDif > 0 ? hiDif : 0 dDM = loDif > hiDif and loDif > 0 ? loDif : 0 ATR = rma(tr(true), i1) DIu = 100 * rma(uDM, i1) / ATR DId = 100 * rma(dDM, i1) / ATR HLM2 = DIu - DId DTI = (100 * ema(ema(ema(HLM2, i2), i3), i4)) / ema(ema(ema(abs(HLM2), i2), i3), i4) signal = ema(DTI, i5) // === RISK MANAGEMENT INPUTS === inpTakeProfit = input(defval = 0, title = "Take Profit (In Market MinTick Value)", minval = 0) inpStopLoss = input(defval = 100, title = "Stop Loss (In Market MinTick Value)", minval = 0) // === RISK MANAGEMENT VALUE PREP === // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it. useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na // === STRATEGY - LONG POSITION EXECUTION === enterLong = (((low<=lowerband1) and (close >lowerband1)) or ((open <= lowerband1) and (close > lowerband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal>signal[3]) exitLong = (high > middleband) strategy.entry(id = "Long", long = true, when = enterLong) strategy.close(id = "Long", when = exitLong) // === STRATEGY - SHORT POSITION EXECUTION === enterShort = (((high>=upperband1) and (close < upperband1)) or ((open >= upperband1) and (close < upperband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal<signal[3]) exitShort = (low < middleband) strategy.entry(id = "Short", long = false, when = enterShort) strategy.close(id = "Short", when = exitShort) // === STRATEGY RISK MANAGEMENT EXECUTION === strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss) // === CHART OVERLAY === plot(upperband1, color=#C10C00, linewidth=3) plot(lowerband1, color=#23E019, linewidth=3) plot(middleband, color=#00E2E2, linewidth=3) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)