Стратегия двойной ATR задержки

Автор:Чао Чжан, Дата: 2024-01-31 17:10:32
Тэги:

img

Обзор

Двойная стратегия ATR Trailing Stop - это краткосрочная стратегия торговли, основанная на индикаторе среднего истинного диапазона (ATR). Стратегия устанавливает две линии остановки потерь, быструю линию ATR и медленную линию ATR, одновременно и определяет вход и выход на основе перекрестного пересечения двух линий. Стратегия проста, отзывчива и подходит для рынков с высокой волатильностью.

Принцип стратегии

Основой этой стратегии является использование двух линий ATR стоп-лосса. Одна из них - быстрая линия ATR с коротким периодом и небольшим множителем для быстрой реакции. Другая - медленная линия ATR с более длительным периодом и большим множителем для фильтрации. Когда быстрая линия ATR пересекает линию медленного ATR, она генерирует сигнал покупки. Когда быстрая линия ATR пересекает линию медленного ATR, она генерирует сигнал продажи. Таким образом, стратегия использует перекресток двух линий ATR для определения входа и выхода, которые могут эффективно контролировать стоп-лосс.

Конкретная логика заключается в следующем: вычислить линию быстрой ATR и линию медленной ATR. Когда цена выше медленной линии, используйте быструю линию для отслеживания стоп-лосса. В противном случае используйте медленную линию для отслеживания стоп-лосса. Цвет Клайна представляет текущую линию стоп-лосса. Зеленый и синий означают использование быстрой линии. Красный и желтый означают использование медленной линии. Выход, когда рыночная цена касается линий стоп-лосса.

Анализ преимуществ

Преимущества этой стратегии:

  1. Простая и понятная логика, легко понятная и реализуемая.
  2. Быстрая реакция на изменения рынка, подходящая для рынка с высокой волатильностью.
  3. Двойные системы ATR для контроля потерь при остановке эффективно управляют риском.
  4. Показатель ATR является параметрическим для регулирования диапазона остановочных потерь.
  5. Визуальный цвет клина ясно указывает на ситуацию стоп-лосса.

Анализ рисков

Существуют также некоторые риски:

  1. Склонны к перепродаже.
  2. У ATR плохая настройка кривой, может усилить потери.
  3. Не может эффективно отфильтровывать боковые и тенденционные рынки.

Мы можем уменьшить риски, оптимизируя период ATR, корректируя мультипликатор ATR, комбинируя другие показатели для фильтрации и т.д.

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

Направления оптимизации:

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

Заключение

Стратегия 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")



Больше