
이 전략은 전날의 종식 가격과 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회 수를 따라 공백한다. 그 다음에는 스톱로스와 스톱을 설정하고, 가격이 스톱로스 가격에 도달하면 스톱로스 청산하고, 스톱 가격에 도달하면 스톱 청산한다.
이 전략의 주요 장점은 다음과 같습니다.
ATR 지표를 사용하여 동적인 입점 가격과 중지 가격을 설정하여 시장의 변동성에 따라 조정하여 거래를 시장 환경에 더 적합하게 만듭니다.
전날의 종식 가격을 사용하여 방향을 결정하고, ATR 지표와 결합하여 구체적인 거래 가격을 결정하여, 너무 많은 소음으로 인한 실시간 가격의 오해를 피하십시오.
단편 거래의 위험도 잘 조절할 수 있는 스톱로스 및 스톱스 메커니즘을 설정한다.
이 전략의 주요 위험은 다음과 같습니다.
ATR 지표에 의해 설정된 가격은 너무 이상화되어 시장 상황을 제대로 반영하지 못할 수 있으며, 이로 인해 빈번한 중지 손실이 발생한다. ATR 파라미터를 적절히 조정하거나 중지 범위를 높일 수 있다.
전날의 종식 가격은 미래 트렌드를 결정할 수 없으며, 급격한 반전이 발생하면 거래 방향 선택에 착각할 수 있다. 다른 지표와 결합하여 트렌드 확인을 고려할 수 있다.
스톱 및 스톱 위치는 조작으로 트리거 될 수 있으며, 실제 스톱을 할 수 없습니다. 스톱을 피하기 위해 구성 요소 수량 스톱을 설정할 수 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
ATR 변수를 최적화하여 거래 가격을 시장의 변동성에 더 적합하게 만듭니다.
트렌드를 판단하는 메커니즘을 추가하고, 거래 반전 시장을 피한다. 예를 들어 MA와 같은 지표와 결합한다.
이윤을 유지하면서도 이윤이 유발되는 확률을 줄이기 위해 이윤을 멈추는 변수를 조정한다.
구성요소 수량손실 방지 및 차단을 설정하여, 매매 및 손실의 가능성을 감소시킨다.
포지션 관리 메커니즘을 추가하여 트렌드 단계의 포지션을 증가시킬 수 있습니다.
이 전략은 전날의 종식 가격과 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")