동적 ATR 후속 중단 손실 전략

저자:차오장, 날짜: 2023-12-11 14:24:18
태그:

img

전반적인 설명

이 전략은 ATR 지표와 함께 설계된 동적 트래일링 스톱 로스 메커니즘을 기반으로 실시간으로 스톱 로스를 조정하며 수익을 극대화하기 위해 효과적인 스톱 로스를 보장합니다.

전략 논리

이 전략은 빠른 ATR 기간 5과 느린 ATR 기간 10을 사용하여 이중 계층 동적 트레일링 스톱 손실을 구축합니다. 가격이 유리한 방향으로 움직일 때 빠른 계층은 먼저 트레일링 스톱을 활성화하여 스톱 손실을 강화합니다. 단기적 인 인퇴가있을 때 느린 계층 스톱 손실은 조기 중단을 피할 수 있습니다. 한편, 빠르고 느린 계층 사이의 크로스오버는 거래 신호로 사용됩니다.

특히, 빠른 계층의 스톱 손실 거리는 5 기간 ATR의 0.5 배이며 느린 계층의 스톱 손실 거리는 10 기간 ATR의 3 배입니다. 빠른 계층이 느린 계층 위에 넘어가면 구매 신호가 생성되며 빠른 계층이 느린 계층 아래에 넘어가면 판매 신호가 생성됩니다. 스톱 손실 라인은 또한 실시간으로 업데이트되며 가격 곡선 아래에 그래프됩니다.

이점 분석

이 전략의 가장 큰 장점은 효과적인 스톱 손실을 보장하면서 수익을 극대화하기 위해 스톱 손실 위치를 동적으로 조정할 수 있다는 것입니다. 고정 스톱 손실 거리와 비교하면 동적 ATR 스톱 손실 라인은 시장의 변동에 따라 조정하여 스톱 손실이 발생할 가능성을 줄일 수 있습니다.

또한, 이중 계층 ATR 디자인은 스톱 손실의 민감성을 균형 잡습니다. 빠른 계층은 신속하게 반응하고 느린 계층은 조기 스톱 손실을 피하기 위해 단기 잡음을 필터링 할 수 있습니다.

위험 분석

이 전략의 주요 위험은 스톱 로스 거리의 설정이 합리적인지 여부에 있다. ATR 멀티플라이저가 너무 높게 설정되면 스톱 로스 범위는 가격 움직임에 따라가지 않을 것이다. ATR 멀티플라이저가 너무 작으면 단기 소음으로 인해 중단될 가능성이 있다. 따라서 매개 변수를 다른 품종의 특성에 따라 조정해야 한다.

또한, 범위에 묶인 시장에서 ATR 값은 작고 스톱 로스 라인은 더 가깝고, 이는 종종 스톱 로스로 이어질 수 있습니다. 따라서이 전략은 특정 변동성을 가진 품종에 더 적합합니다.

최적화 방향

최적의 균형을 찾기 위해 ATR 사이클 매개 변수의 다른 조합을 시도 할 수 있습니다. 또한 시장 단계를 판단하기 위해 트렌드 지표와 같은 다른 지표와 결합하는 것을 고려 할 수 있습니다.

또한 ATR 지표의 대안을 연구 할 수 있습니다. DKVOL, HRANGE 또는 ATR 비율 등으로 ATR을 대체하면 더 나은 스톱 손실 효과를 얻을 수 있습니다.

요약

이 전략은 과도한 스톱 손실을 피하면서 수익을 극대화하기 위해 ATR 지표를 기반으로 한 이층 동적 추적 메커니즘을 설계합니다. 이 전략은 스톱 손실에 대한 요구 사항이 높은 사용자에게 적합합니다. 이 전략은 최적의 스톱 손실 효과를 달성하기 위해 시장 및 품종 특성에 따라 매개 변수를 유연하게 조정할 수 있습니다.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@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 period", input.integer)  // ATR Period
AF2 = input(3, "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)

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, display=display.none)
TS2 = plot(Trail2, "Slow Trail", style=plot.style_line, color=Trail1 > Trail2 ? color.green : color.red, linewidth=2)
fill(TS1, TS2, Bull ? color.new(color.green, 90) : color.new(color.red, 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.close("Buy")


더 많은