이중 ATR 후속 정지 전략

저자:차오장, 날짜: 2024-01-31 17:10:32
태그:

img

전반적인 설명

이중 ATR 트레일링 스톱 전략 (Dual ATR Trailing Stop strategy) 은 평균 참 범위 (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. 오버 트레이딩을 피하기 위해 홀딩 기간에 출구를 추가합니다.

결론

이중 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")



더 많은