전일 종가와 ATR 지표를 기반으로 한 추세 추종 전략


생성 날짜: 2024-01-31 14:39:09 마지막으로 수정됨: 2024-01-31 14:39:09
복사: 3 클릭수: 676
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

전일 종가와 ATR 지표를 기반으로 한 추세 추종 전략

개요

이 전략은 전날의 종식 가격과 ATR 지표에 기초하여 다수 공백점 포지션 개시 가격과 정지 가격을 설정하여 트렌드를 추적합니다. 가격이 개시 가격을 뚫을 때 포지션을 열고 더 많은 공백, 정지 또는 정지 후 청산하십시오.

전략 원칙

이 전략은 전날의 종식 가격, 최고 가격, 최저 가격 및 ATR 지표를 사용하여 입시 가격과 중지 가격을 계산합니다. 구체적인 계산 공식은 다음과 같습니다:

다중 상장 개시 가격 TPup = 전날 종료 가격 + ATR* 0.8 공백으로 포지션을 개시한 가격 TPdown = 전날의 폐장 가격 - ATR* 0.8

다중 스톱 손실 가격 슬랩 = 전날의 종료 가격 + ATR* 0.2 빈 헤드 스톱 가격 sldown = 전날 종료 가격 - ATR* 0.2

다중 상점 상점 가격 profitlevelup = 전날 최저 가격 + ATR* 1.7
빈 머리 스톱 가격 profitleveldown = 전날 최고 가격 - ATR* 1.7

가격이 TPup를 돌파하면 10회 수를 따라 더 많이 한다. 가격이 TPdown을 돌파하면 10회 수를 따라 공백한다. 그 다음에는 스톱로스와 스톱을 설정하고, 가격이 스톱로스 가격에 도달하면 스톱로스 청산하고, 스톱 가격에 도달하면 스톱 청산한다.

우위 분석

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

  1. ATR 지표를 사용하여 동적인 입점 가격과 중지 가격을 설정하여 시장의 변동성에 따라 조정하여 거래를 시장 환경에 더 적합하게 만듭니다.

  2. 전날의 종식 가격을 사용하여 방향을 결정하고, ATR 지표와 결합하여 구체적인 거래 가격을 결정하여, 너무 많은 소음으로 인한 실시간 가격의 오해를 피하십시오.

  3. 단편 거래의 위험도 잘 조절할 수 있는 스톱로스 및 스톱스 메커니즘을 설정한다.

위험 분석

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

  1. ATR 지표에 의해 설정된 가격은 너무 이상화되어 시장 상황을 제대로 반영하지 못할 수 있으며, 이로 인해 빈번한 중지 손실이 발생한다. ATR 파라미터를 적절히 조정하거나 중지 범위를 높일 수 있다.

  2. 전날의 종식 가격은 미래 트렌드를 결정할 수 없으며, 급격한 반전이 발생하면 거래 방향 선택에 착각할 수 있다. 다른 지표와 결합하여 트렌드 확인을 고려할 수 있다.

  3. 스톱 및 스톱 위치는 조작으로 트리거 될 수 있으며, 실제 스톱을 할 수 없습니다. 스톱을 피하기 위해 구성 요소 수량 스톱을 설정할 수 있습니다.

최적화 방향

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

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