Двойная стратегия ATR Trailing Stop - это краткосрочная стратегия торговли, основанная на индикаторе среднего истинного диапазона (ATR). Стратегия устанавливает две линии остановки потерь, быструю линию ATR и медленную линию ATR, одновременно и определяет вход и выход на основе перекрестного пересечения двух линий. Стратегия проста, отзывчива и подходит для рынков с высокой волатильностью.
Основой этой стратегии является использование двух линий ATR стоп-лосса. Одна из них - быстрая линия ATR с коротким периодом и небольшим множителем для быстрой реакции. Другая - медленная линия ATR с более длительным периодом и большим множителем для фильтрации. Когда быстрая линия ATR пересекает линию медленного ATR, она генерирует сигнал покупки. Когда быстрая линия ATR пересекает линию медленного ATR, она генерирует сигнал продажи. Таким образом, стратегия использует перекресток двух линий ATR для определения входа и выхода, которые могут эффективно контролировать стоп-лосс.
Конкретная логика заключается в следующем: вычислить линию быстрой ATR и линию медленной ATR. Когда цена выше медленной линии, используйте быструю линию для отслеживания стоп-лосса. В противном случае используйте медленную линию для отслеживания стоп-лосса. Цвет Клайна представляет текущую линию стоп-лосса. Зеленый и синий означают использование быстрой линии. Красный и желтый означают использование медленной линии. Выход, когда рыночная цена касается линий стоп-лосса.
Преимущества этой стратегии:
Существуют также некоторые риски:
Мы можем уменьшить риски, оптимизируя период ATR, корректируя мультипликатор ATR, комбинируя другие показатели для фильтрации и т.д.
Направления оптимизации:
Стратегия Dual ATR Trailing Stop проста в понимании и реализации, особенно подходит для сценариев высокой волатильности и может эффективно контролировать риски.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © ceyhun //@version=4 strategy("ATR Trailing Stop Strategy by ceyhun", overlay=true) /////////notes//////////////////////////////////////// // This is based on the ATR trailing stop indicator // // width addition of two levels of stops and // // different interpretation. // // This is a fast-reacting system and is better // // suited for higher volatility markets // ////////////////////////////////////////////////////// SC = input(close, "Source", input.source) // Fast Trail // AP1 = input(5, "Fast ATR period", input.integer) // ATR Period AF1 = input(0.5, "Fast ATR multiplier", input.float) // ATR Factor SL1 = AF1 * atr(AP1) // Stop Loss Trail1 = 0.0 Trail1 := iff(SC > nz(Trail1[1], 0) and SC[1] > nz(Trail1[1], 0), max(nz(Trail1[1], 0), SC - SL1), iff(SC < nz(Trail1[1], 0) and SC[1] < nz(Trail1[1], 0), min(nz(Trail1[1], 0), SC + SL1), iff(SC > nz(Trail1[1], 0), SC - SL1, SC + SL1))) // Slow Trail // AP2 = input(10, "Slow ATR perod", input.integer) // ATR Period AF2 = input(2, "Slow ATR multiplier", input.float) // ATR Factor SL2 = AF2 * atr(AP2) // Stop Loss Trail2 = 0.0 Trail2 := iff(SC > nz(Trail2[1], 0) and SC[1] > nz(Trail2[1], 0), max(nz(Trail2[1], 0), SC - SL2), iff(SC < nz(Trail2[1], 0) and SC[1] < nz(Trail2[1], 0), min(nz(Trail2[1], 0), SC + SL2), iff(SC > nz(Trail2[1], 0), SC - SL2, SC + SL2))) // Bar color for trade signal // Green = Trail1 > Trail2 and close > Trail2 and low > Trail2 Blue = Trail1 > Trail2 and close > Trail2 and low < Trail2 Red = Trail2 > Trail1 and close < Trail2 and high < Trail2 Yellow = Trail2 > Trail1 and close < Trail2 and high > Trail2 // Signals // Bull = barssince(Green) < barssince(Red) Bear = barssince(Red) < barssince(Green) Buy = crossover(Trail1, Trail2) Sell = crossunder(Trail1, Trail2) TS1 = plot(Trail1, "Fast Trail", style=plot.style_line,color=Trail1 > Trail2 ? color.blue : color.yellow, linewidth=2) TS2 = plot(Trail2, "Slow Trail", style=plot.style_line,color=Trail1 > Trail2 ? color.green : color.red, linewidth=2) fill(TS1, TS2, Bull ? color.green : color.red, transp=90) plotcolor = input(true, "Paint color on chart", input.bool) bcl = iff(plotcolor == 1, Blue ? color.blue : Green ? color.lime : Yellow ? color.yellow : Red ? color.red : color.white, na) barcolor(bcl) if Buy strategy.entry("Buy", strategy.long, comment="Buy") if Sell strategy.entry("Sell", strategy.short, comment="Sell")