
Двойная стратегия ATR-стоп-стоп является короткой линейной торговой стратегией, основанной на средней реальной волновой величине (ATR). Эта стратегия одновременно устанавливает две линии быстрого ATR и две линии медленного ATR, чтобы судить о входе и выходе на основе пересечения двух линий остановки.
Эта стратегия основана на использовании показателей ATR для установки двух стоп-линий. Одна из них - быстрая линия ATR, с коротким циклом ATR, умноженная на малую величину, быстро реагирующая; другая - медленная линия ATR, с длинным циклом ATR, умноженная на большую величину, выполняющая роль фильтра.
Конкретная логика операции заключается в следующем: вычислить быструю ATR-линию и медленную ATR-линию; цена быстрой линии выше, чем цена медленной линии, то она будет остановлена с помощью быстрой линии, в противном случае она будет остановлена с помощью медленной линии. Цвет клина показывает, что в настоящее время используется линия остановки, зеленый и синий - это остановка с помощью быстрой линии, красный и желтый - это остановка с помощью медленной линии.
Двойная стратегия ATR имеет следующие преимущества:
Однако эта стратегия также несет в себе некоторые риски:
Эти риски могут быть уменьшены путем оптимизации циклов ATR, корректировки ATR и фильтрации других показателей.
Строки, по которым можно оптимизировать двойную стратегию остановки убытков с использованием ATR:
Двойная стратегия остановки убытков с отслеживанием ATR в целом проста в понимании, особенно подходит для сценариев с высокой волатильностью, и может эффективно управлять риском. Есть большой простор для оптимизации, который можно улучшить с помощью таких методов, как корректировка параметров, добавление фильтров и т. Д. Это рекомендуемая стратегия короткой линии.
/*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")