알파트렌드 적응형 ATR 채널 브레이크업 전략

저자:차오장, 날짜: 2023-09-11 14:27:54
태그:

알파 트렌드 전략은 가격 트렌드 방향을 파악하고 채널 브레이크아웃을 기반으로 트렌드를 추적하기 위해 적응성 ATR 채널을 사용합니다. 구체적으로, 상단역은 ATR 값을 빼고 낮은 ATR 값이고, 하단역은 ATR 값을 더하면 높은 것으로 ATR 채널을 구축합니다. 가격이 상단역을 넘어서면 긴 엔트리가 취해지고, 가격이 하단역을 넘어서면 짧은 엔트리가 취됩니다.

ATR는 시장의 변동성과 동력을 실시간으로 반영합니다. 상부 및 하부 밴드에서 형성된 채널은 가격 동력과 힘을 측정 할 수 있습니다. 브레이크아웃은 가능한 트렌드 역전 또는 가속을 신호하여 트렌드를 따라가는 것이 합리적입니다. 알파 트렌드의 장점은 가격 변화를 파악하기 위해 ATR의 적응력을 활용하는 동시에 RSI와 같은 다른 지표를 결합하여 트렌드 방향을 결정하여 진입 정확도를 향상시키는 것입니다.

그러나 몇 가지 사항은 주목할 필요가 있다. ATR 자체는 트렌드 역전 후 엔트리를 유발할 수 있는 지연 특성을 가지고 있다. 또한, 스톱 로스를 사용하지 않는 것은 큰 드라우다운으로 이어진다. 마지막으로, ATR 기간과 같은 매개 변수는 다른 제품과 시간 프레임에 최적화되어야 한다.

요약하자면, 알파 트렌드는 동적인 트렌드 반전 지점을 식별하는 데 독특한 강점을 가지고 있지만, 실시간 거래에는 스톱, 사이징 포지션 및 매개 변수 조정 등을 포함한 엄격한 리스크 관리가 여전히 필요합니다. 적절한 리스크 컨트롤을 사용하면이 전략은 장기적으로 성공적으로 적용 될 수 있습니다.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-04-10 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"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/
// author © KivancOzbilgic
// developer © KivancOzbilgic
//@version=5

strategy("AlphaTrend Strategy", shorttitle='ATst', overlay=true, format=format.price, precision=2, margin_long=100, margin_short=100)
coeff = input.float(1, 'Multiplier', step=0.1)
AP = input(14, 'Common Period')
ATR = ta.sma(ta.tr, AP)
src = input(close)
showsignalsk = input(title='Show Signals?', defval=false)
novolumedata = input(title='Change calculation (no volume data)?', defval=false)
upT = low - ATR * coeff
downT = high + ATR * coeff
AlphaTrend = 0.0
AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT

color1 = AlphaTrend > AlphaTrend[2] ? #00E60F : AlphaTrend < AlphaTrend[2] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B
k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3)
k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3)

fill(k1, k2, color=color1)

buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2])
sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2])


K1 = ta.barssince(buySignalk)
K2 = ta.barssince(sellSignalk)
O1 = ta.barssince(buySignalk[1])
O2 = ta.barssince(sellSignalk[1])

plotshape(buySignalk and showsignalsk and O1 > K2 ? AlphaTrend[2] * 0.9999 : na, title='BUY', text='BUY', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0))

plotshape(sellSignalk and showsignalsk and O2 > K1 ? AlphaTrend[2] * 1.0001 : na, title='SELL', text='SELL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0))


longCondition = buySignalk
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = sellSignalk
if (shortCondition)
    strategy.entry("Short", strategy.short)
 

더 많은