
이 전략의 핵심 아이디어는 ATR 지표가 계산한 가격 변동 범위를 사용하여 가격 돌파구를 판단하고 EMA 지표가 전반적인 트렌드 방향을 판단하여 트렌드를 따라 거래하는 것입니다. 가격이 ATR 범위를 따라 또는 아래로 돌파 할 때, 돌파구 방향이 EMA 방향과 일치하면 더 많은 것을하거나 공백을 만듭니다.
우선, 이 전략은 ATR 지표를 사용하여 일정 주기 동안의 가격 변동의 범위를 계산한다. ATR 범위의 상한은 SMA+ATR이고, 하한은 SMA-ATR이다. 이 중 SMA는 당일 종결 가격의 간단한 이동 평균을, ATR은 실제 파장의 평균을 나타낸다.
가격이 ATR 범위를 따라 또는 아래로 돌파 할 때 거래 기회가 형성됩니다. 이때 방향을 판단해야하며, 상향으로 돌파 할 경우 더 많은 것을해야하며, 하향으로 돌파 할 경우 공백을해야합니다. 돌파 방향과 추세 방향이 일치하도록하기 위해, 전략은 EMA 지표를 사용하여 전체 추세 방향을 판단합니다. 돌파 방향과 EMA 방향이 일치 할 때만 출장합니다.
마지막으로, 전략은 가격의 ATR 범위를 다시 깨는 것을 평점 신호로 한다. 상반기 가격의 하위 범위를 깨면 평점이다. 상반기 가격의 상위 범위를 깨면 평점이다.
ATR 지표를 사용하여 돌파구를 판단하여 가격의 추세적 돌파구를 효과적으로 잡을 수 있습니다. ATR 범위는 변동률에 따라 설정되어 정상적인 변동에 큰 방해가되지 않습니다.
EMA 지표를 추가하여 방향 판단을 통해 트렌드 방향과 반대되는 거래를 피하면 수익률을 크게 높일 수 있습니다.
ATR 범위를 다시 돌파하는 것은 손실을 최소화하기 위한 방법이다.
위기 상황에서는 ATR 범위가 자주 뚫릴 수 있으며, 과도한 무효 거래와 손실을 확대할 수 있다.
EMA는 트렌드 방향을 판단하는 지표로서, 약간의 지연성이 있다. 따라서, 가격의 단기 반전의 기회를 놓칠 수 있다.
손해배상법은 가격 재침식이며, 갑작스러운 사건으로 인해 손해가 확대될 수 있다.
다른 지표와 결합하여 추세를 판단하고 철회하는 것을 고려할 수 있으며, EMA의 단일 판단 오류를 피한다. 예를 들어 MACD, KDJ 등이다.
시장의 변동률에 따라 실시간으로 ATR 파라미터를 조정하여 ATR 범위를 실제 변동에 가깝게 만들 수 있습니다.
모바일 스톱 방식과 결합하여 실시간으로 스톱 포인트를 조정하여 단일 손실 위험을 최대한 제어 할 수 있습니다.
이 전략의 전체적인 아이디어는 명확하고, ATR 지표를 사용하여 가격 돌파구를 판단하고 EMA 판단 방향과 협력하여 트렌드를 효과적으로 따라갈 수 있습니다. 중지 방식은 직접적이며, 쉽게 조작할 수 있습니다. 그러나 동시에 특정 위험이 존재하며, 최적화 공간은 더 큰데, 추가 테스트와 조정이 필요합니다. 일반적으로 이 전략은 높은 승률을 추구하는 트렌드 거래자에게 적합합니다.
/*backtest
start: 2024-01-23 00:00:00
end: 2024-02-22 00:00:00
period: 3h
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/
// © cwagoner78
//@version=4
strategy("cATRpillar", overlay=true)
//------------
//inputs
lookback = input(title="Periods", type=input.integer, defval=37)
atrMult = input(title="Range Multiplier", type=input.float, defval=.2)
takeProfit = input(title="Take Profit", type=input.float, defval=5000)
stopLoss = input(title="Stop Loss", type=input.float, defval=2500)
lots = input(title="Lots to Trade", type=input.float, defval=1)
//------------
//indicators
atr=atr(lookback)*atrMult
sma=sma(close, lookback)
ema=ema(close,lookback*2)
rangeLo=sma-atr
rangeHi=sma+atr
//------------
//draw objects
p0 =plot(close, title="Close", color=#26A69A, linewidth=0, transp=80,style=plot.style_stepline)
p1 =plot(rangeHi, title="High", color=color.fuchsia, linewidth=0, transp=80,style=plot.style_stepline)
p2 =plot(rangeLo, title="Low", color=color.lime, linewidth=0, transp=80,style=plot.style_stepline)
p3 =plot(ema, title="EMA", color=color.white, linewidth=0, transp=80, style=plot.style_stepline)
fill(p1, p0, color=color.fuchsia)
fill(p0, p2, color=color.lime)
//------------
//Trading
atrShort=open[1] > rangeHi and open < rangeLo
atrLong=open[1] < rangeLo and open > rangeHi
exitLong=open>rangeLo
exitShort=open<rangeHi
//Long
longCondition=atrLong and open>ema+atr
strategy.entry(id="cATRpillar-Buy", long=true, when=longCondition)
longCloseCondition=exitLong
strategy.exit(id="cATRpillar-Exit", qty=lots, profit=takeProfit, loss=stopLoss, when=longCloseCondition)
//Short
shortCondition=atrShort and open<ema-atr
strategy.entry(id="cATRpillar-Sell", long=false, when=shortCondition)
shortCloseCondition=exitShort
strategy.exit(id="cATRpillar-Exit", qty=lots, profit=takeProfit, loss=stopLoss, when=shortCloseCondition)
plotshape(shortCondition, title= "Short", location=location.belowbar, color=color.fuchsia, transp=80, style=shape.triangledown, size=size.tiny)
plotshape(longCondition, title= "Long", location=location.abovebar, color=color.lime, transp=80, style=shape.triangleup, size=size.tiny)
//------------