이 전략은 추진력과 평균 역전 이론을 결합한 하이브리드 거래 시스템이다. 변화율 (ROC) 지표와 볼링거 밴드를 사용하여 시장 과잉 구매 및 과잉 판매 조건을 식별하고 특정 임계값이 넘어가면 거래를 촉발한다. 핵심 개념은 추진력 변화를 감지하고 평균으로 가격 역전을 활용하는 것입니다.
이 전략은 단기 가격 변화를 계산하기 위해 2 기간 ROC 지표를 사용하며, 두 개의 볼링거 밴드 세트를 사용합니다: 과잉 판매 조건과 진입 신호에 대한 단기 (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)")