알파트렌드 이중 추적 전략

저자:차오장, 날짜: 2024-02-02 15:17:01
태그:

img

전반적인 설명

알파트렌드 이중 추적 전략은 알파트렌드 지표가 생성하는 구매 및 판매 신호를 기반으로 거래합니다. 알파트렌드가 구매 및 판매 신호를 생성하는 영역에서 장과 짧은 포지션을 개척합니다.

전략 논리

알파트렌드 이중 추적 전략의 핵심은 알파트렌드 지표입니다. 알파트렌드 지표는 적응형 ATR 및 가격 (폐기 가격 또는 볼륨 가중 평균 가격) 을 기반으로 상위 및 하위 대역을 계산합니다. 구체적인 계산 방법은:

상단 대역 = 최하위 하위 - ATR * 증배자 하위 대역 = 가장 높은 높음 + ATR * 증배자

여기서 ATR는 특정 기간 동안의 평균 진 범위이며 인수는 조정 가능한 매개 변수입니다. 가격이 상단보다 높을 때 지표선은 상단으로 접근합니다. 가격이 하단보다 낮을 때 지표선은 하단으로 접근합니다. 따라서 AlphaTrend은 적응 채널을 형성합니다.

알파트렌드 이중 추적 전략은 알파트렌드에서 생성된 신호에 기초하여 장과 짧은 포지션을 설정합니다. 구체적인 논리는:

  • 가격이 알파 트렌드 위를 넘을 때 롱으로 이동합니다.
  • 가격이 알파 트렌드 아래로 넘어가면 쇼트가 됩니다.

이것은 동적 알파 트렌드 채널에 기반한 이방향 추적 거래를 완료합니다.

이점 분석

알파트렌드 이중 추적 전략의 가장 큰 장점은 시장 트렌드의 변화를 추적 할 수 있다는 것입니다. 적응형 ATR은 시장 변동성의 변화에 따라 채널 범위를 조정 할 수 있으며, 변동성 확장에 따라 전통적인 볼링거 밴드가 효과를 잃는 문제를 피할 수 있습니다.

또한, 알파트렌드는 가격과 부피 (또는 추진력) 정보를 결합하여 일부 가짜 브레이크오웃을 필터링하여 거래 신호의 품질을 향상시킵니다.

위험 분석

알파 트렌드 이중 추적 전략의 주요 위험은 스톱 로스 포인트에 영향을 줄 수있는 거대한 시장 변동에서 비롯됩니다. 비정상적인 시장 움직임이있을 때 스톱 로스 포인트가 깨질 수 있으며 큰 손실로 이어질 수 있습니다. 이것은 ATR 매개 변수와 스톱 로스 포인트를 적절히 조정하여 제어해야합니다.

또한, ALPHA 자체는 약간의 차질을 가지고 있습니다. 또한 시장 전환점에 대해 잘못된 신호를 생성 할 수 있습니다. 신호를 확인하기 위해 다른 지표를 사용해야합니다.

최적화 방향

알파트렌드 이중 추적 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 트렌드 지표와 결합하여 주요 시장 트렌드를 결정하여 트렌드에 반대되는 거래를 피합니다.
  2. 부피 필터를 높여서 부피가 낮은 거짓 파열로 인한 손실을 피합니다.
  3. 각종 제품에 더 적합한 채널 범위를 만들기 위해 지표 매개 변수를 최적화합니다.
  4. 더 똑똑한 채널을 만들기 위해 기계 학습 알고리즘을 증가시킵니다.

위의 최적화를 통해 알파트렌드 전략의 안정성과 수익성이 더욱 향상될 수 있습니다.

요약

요약하자면, 알파 트렌드 이중 추적 전략은 시장 변화를 추적하는 효과적인 방법입니다. 전통적인 기술 지표가 효과를 잃는 문제를 해결하고 신호를 필터하기 위해 볼륨 정보를 통합합니다. 적절한 최적화로이 전략은 양적 거래 시스템에서 강력한 도구가 될 수 있습니다.


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 1h
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/
// author © KivancOzbilgic
// developer © KivancOzbilgic
//@version=5
strategy('AlphaTrend', shorttitle='AT', overlay=true, format=format.price, precision=2)
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=true)
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 and showsignalsk and O1 > K2
if (longCondition)
    
    strategy.entry("BUY", strategy.long, comment = "BUY ENTRY")

shortCondition = sellSignalk and showsignalsk and O2 > K1
if (shortCondition )
    
    strategy.entry("SELL", strategy.short, comment = "SELL ENTRY")













// alertcondition(buySignalk and O1 > K2, title='Potential BUY Alarm', message='BUY SIGNAL!')
// alertcondition(sellSignalk and O2 > K1, title='Potential SELL Alarm', message='SELL SIGNAL!')

// alertcondition(buySignalk[1] and O1[1] > K2, title='Confirmed BUY Alarm', message='BUY SIGNAL APPROVED!')
// alertcondition(sellSignalk[1] and O2[1] > K1, title='Confirmed SELL Alarm', message='SELL SIGNAL APPROVED!')



// alertcondition(ta.cross(close, AlphaTrend), title='Price Cross Alert', message='Price - AlphaTrend Crossing!')
// alertcondition(ta.crossover(low, AlphaTrend), title='Candle CrossOver Alarm', message='LAST BAR is ABOVE ALPHATREND')
// alertcondition(ta.crossunder(high, AlphaTrend), title='Candle CrossUnder Alarm', message='LAST BAR is BELOW ALPHATREND!')

// alertcondition(ta.cross(close[1], AlphaTrend[1]), title='Price Cross Alert After Bar Close', message='Price - AlphaTrend Crossing!')
// alertcondition(ta.crossover(low[1], AlphaTrend[1]), title='Candle CrossOver Alarm After Bar Close', message='LAST BAR is ABOVE ALPHATREND!')
// alertcondition(ta.crossunder(high[1], AlphaTrend[1]), title='Candle CrossUnder Alarm After Bar Close', message='LAST BAR is BELOW ALPHATREND!')






더 많은