
이 전략은 모멘텀과 평균 회귀 이론을 결합한 하이브리드 거래 시스템입니다. ROC(변화율) 지표와 볼린저 밴드를 사용하여 시장의 매수 과다 및 매도 과다 조건을 파악하고 특정 임계값을 넘을 때 거래 신호를 발생시킵니다. 전략의 핵심은 모멘텀 전환점을 감지하고 가격이 평균으로 회귀하는 특성을 이용해 수익을 얻는 것입니다.
이 전략은 단기 가격 변화를 계산하기 위해 2기간 ROC 지표를 사용하고 서로 다른 매개변수를 갖는 두 세트의 Bollinger Bands를 사용합니다. 단기 Bollinger Bands(18기간, 1.7표준편차)는 매도 과열 조건과 진입 신호를 결정하는 데 사용됩니다. , 장기 볼린저 밴드(21기간, 2.1표준편차)는 매수 과다 조건과 종료 신호를 결정하는 데 사용됩니다. ROC가 하단 볼린저 밴드를 위로 교차할 때 가격 모멘텀이 약에서 강으로 전환되고 시스템이 롱 포지션을 오픈함을 나타냅니다. ROC가 상단 볼린저 밴드를 아래로 교차할 때 모멘텀이 약해지고 시스템이 롱 포지션을 닫음을 나타냅니다. 위치. 이 전략은 매수 과다 및 매도 과다 영역을 배경색으로 표시하는데, 녹색은 매도 과다(상승 가능성)를 나타내고 빨간색은 매수 과다(하락 가능성)를 나타냅니다.
적응형 모멘텀 평균 회귀 크로스오버 전략은 ROC 지표와 이중 볼린저 밴드를 결합하여 다양한 시장 환경에 적응할 수 있는 거래 시스템을 구축합니다. 이 전략은 유연성을 유지하는 동시에 위험 관리에 중점을 두고 있으며, 실용적 가치가 높습니다. 이 전략은 지속적인 최적화와 개선을 통해 실제 거래에서 더 나은 성과를 거둘 수 있을 것으로 기대됩니다.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-08 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Adaptive Momentum Reversion Strategy ", overlay=false, initial_capital=50000, pyramiding=0, commission_type=strategy.commission.cash_per_contract, commission_value=0.05, slippage=1)
// Input: ROC Period
rocPeriod = input.int(2, title="ROC Period", minval=1)
// Input: Bollinger Bands Settings (Lower Band)
bbLowerLength = input.int(18, title="Lower Bollinger Band Length", minval=1)
bbLowerStdDev = input.float(1.7, title="Lower Bollinger Band StdDev", minval=0.1, step=0.1)
// Input: Bollinger Bands Settings (Upper Band)
bbUpperLength = input.int(21, title="Upper Bollinger Band Length", minval=1)
bbUpperStdDev = input.float(2.1, title="Upper Bollinger Band StdDev", minval=0.1, step=0.1)
// ROC Calculation
rocValue = (close - close[rocPeriod]) / close[rocPeriod] * 100
// Bollinger Bands Calculation
bbLowerBasis = ta.sma(rocValue, bbLowerLength) // Basis for Lower Band
bbLower = bbLowerBasis - bbLowerStdDev * ta.stdev(rocValue, bbLowerLength) // Lower Band
bbUpperBasis = ta.sma(rocValue, bbUpperLength) // Basis for Upper Band
bbUpper = bbUpperBasis + bbUpperStdDev * ta.stdev(rocValue, bbUpperLength) // Upper Band
// Plot ROC
plot(rocValue, color=color.blue, linewidth=2, title="ROC Value")
// Plot Bollinger Bands
plot(bbLowerBasis, color=color.gray, linewidth=1, title="Lower BB Basis (SMA)")
plot(bbLower, color=color.green, linewidth=1, title="Lower Bollinger Band")
plot(bbUpperBasis, color=color.gray, linewidth=1, title="Upper BB Basis (SMA)")
plot(bbUpper, color=color.red, linewidth=1, title="Upper Bollinger Band")
// Add Zero Line for Reference
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_dotted)
// Entry Condition: Long when ROC crosses above the lower Bollinger Band
longCondition = ta.crossover(rocValue, bbLower)
if (longCondition)
strategy.entry("Long", strategy.long)
// Exit Condition: Exit on Upper Bollinger Band Cross or ROC drops below Lower Band again
exitCondition = ta.crossunder(rocValue, bbUpper)
if (exitCondition)
strategy.close("Long")
// Background Color for Extreme Conditions
bgcolor(rocValue > bbUpper ? color.new(color.red, 80) : na, title="Overbought (ROC above Upper BB)")
bgcolor(rocValue < bbLower ? color.new(color.green, 80) : na, title="Oversold (ROC below Lower BB)")