ATR 트렌드 트래킹 전략

저자:차오장, 날짜: 2024-01-31 14:39:09
태그:

img

전반적인 설명

이 전략은 트렌드를 추적하기 위해 전날의 폐쇄 가격과 ATR 지표에 기초하여 긴 및 짧은 입시 가격 수준과 스톱 로스 가격 수준을 설정합니다. 가격이 입시 가격 수준을 넘어서면 길거나 짧게 이동하고 스톱 로스 또는 수익을 취하는 지위를 평평하게합니다.

전략 논리

이 전략은 전날의 폐쇄 가격, 높은 가격, 낮은 가격 및 ATR 지표를 사용하여 입시 가격 수준과 스톱 로스 수준을 계산합니다. 구체적인 공식은 다음과 같습니다.

긴 진입 가격 수준 TPup = 전날 close + ATR * 0.8
짧은 입시 가격 수준 TPdown = 전날 close - ATR * 0.8

긴 스톱 로스 레벨 슬로프 = 전날의 클로즈 + ATR * 0.2
단기 스톱 로스 레벨 sldown = 전날의 종료 - ATR * 0.2

장수익수익수익수익수익상승 = 전날의 최저치 + ATR * 1.7
단기 영업이익 수준 영업이익 수준 하락 = 전날의 최고 - ATR * 1.7

가격이 TPup를 통과하면 10 로트를 장거리한다. 가격이 TPdown을 통과하면 10 로트를 단축한다. 그 다음 스톱 로스를 설정하고 이윤을 취한다. 스톱 로스 트리거 또는 이윤을 취하는 트리거에 출구 포지션을 설정한다.

이점 분석

이 전략의 주요 장점은 다음과 같습니다.

  1. ATR 지표를 사용하여 시장 변동성을 기반으로 동적인 입시 가격 수준을 설정하고 손실을 멈추는 수준을 설정하여 거래가 시장 조건에 더 적응 할 수 있습니다.

  2. 방향 결정에 전날 close를 사용하여 ATR 지표와 결합하여 특정 거래 수준을 식별하여 너무 많은 실시간 가격 소음으로 오해되는 것을 피합니다.

  3. 스톱 로스 메커니즘과 수익 메커니즘을 설정하여 각 거래의 위험을 효과적으로 제어합니다.

위험 분석

이 전략의 주요 위험은 다음과 같습니다.

  1. ATR에 의해 설정된 가격 수준은 시장 조건을 제대로 반영하기에는 너무 이상적이 될 수 있으며, 이는 종종 스톱 로스를 유발할 수 있습니다. ATR의 매개 변수를 조정하거나 스톱 로스 범위를 넓힐 수 있습니다.

  2. 전날의 폐쇄는 미래의 추세를 결정할 수 없습니다. 급격한 반전은 방향 선택에 오류를 일으킬 수 있습니다. 추세를 확인하기 위해 다른 지표가 결합 될 수 있습니다.

  3. 스톱 로스 (Stop Loss) 와 스톱 로스 (Take Profit) 는 트리거를 위해 조작될 수 있으며, 진정한 스톱 로스를 달성하지 못한다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. ATR 매개 변수를 최적화하여 거래 수준이 시장 변동성에 더 잘 맞게 만들어야 합니다.

  2. 트렌드 판단 메커니즘을 추가하여 거래 반전을 피합니다. 예를 들어 MA 지표와 결합합니다.

  3. 이윤 취득 범위를 조정하고 수익성을 유지하면서 이윤 취득의 가능성을 줄입니다.

  4. 패치 스톱 손실 및 수익을 설정 함락 또는 손실의 가능성을 줄이기 위해.

  5. 트렌드 단계에서 포지션을 늘리기 위해 포지션 사이징 메커니즘을 추가합니다.

결론

이 전략은 트렌드를 효과적으로 추적하기 위해 전날의 폐쇄와 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"}]
*/

//@version=3
strategy("PC with ATR Strategy (by Zhipengcfel)", shorttitle="PC_ATR", pyramiding=1, overlay=true)

// Zhipengcfel's Previous day's close with ATR Strategy
//
// Version 1.0
// @copyright Idea by Zhipengcfel on June 29, 2017.

//Previous day's close plus ATR strategy. 
//Buy (if breaking PC+ATR*0.8) or sell (if breaking PC-0.8*ATR). 

//This is just a demo vision and can not be used for real auto trading



///////////// ATR value
ATRlength = input(14, minval=1, title="lookback length of ATR")
//ATR = atr(ATRlength)
ATR = request.security(syminfo.tickerid, 'D', atr(ATRlength))

///////////// Entry levels and target levels
entr = input(0.8, minval=0.1, step = 0.05, title="Entry level for ATR")
tplevel = input(1.7, minval=0.1, step = 0.05, title="Exit level for ATR")
yesterday = request.security(syminfo.tickerid, 'D', close[1])
dl = request.security(syminfo.tickerid, 'D', low[1])
dh = request.security(syminfo.tickerid, 'D', high[1])
TPup = yesterday+entr*ATR
TPdown = yesterday-entr*ATR
profitlevelup = dl+tplevel*ATR
profitleveldown = dh-tplevel*ATR

///////////// Stop loss level
sl = input( 0.2  ,minval=0.01, step = 0.05, title="Stop loss level for ATR") //82 for 2, 83 for 3 and more positions
slup = yesterday+sl*ATR
sldown = yesterday-sl*ATR

///////////// Starting year to backtest
yer = input( 2014  , title="Backtest Starting year")


///////////// strategy: PC + ATR
if (close > TPup) and (close < profitlevelup)
    strategy.entry("LONG", strategy.long, 10, comment="Buy", when = year > yer, oca_name="My oca")
    strategy.exit("Stopped", "LONG",  stop = slup, limit= profitlevelup, oca_name="My oca")
            

if (close < TPdown) and (close > profitleveldown)
    strategy.entry("SHORT", strategy.short, 10, comment="Sell", when = year > yer, oca_name="My oca")
    strategy.exit("Stopped", "SHORT", stop = sldown, limit= profitleveldown, oca_name="My oca")
 

더 많은