이 전략은
이 전략의 핵심은 시장 동력을 측정하기 위해 CMO 지표를 사용합니다. CMO는 상향 및 하향 움직임의 합에 대한 차이의 비율을 계산하여 -100에서 100까지의 오시일레이터를 생성합니다. CMO가 -50 이하로 떨어지면 시스템이 긴 신호를 생성하여 과판 시장 상태를 나타냅니다. CMO가 50를 초과하거나 보유 기간이 5 주기를 초과하면 포지션은 종료됩니다. 이 디자인은 적절한 수익 취득 및 중지 손실 조치를 실행하면서 가격 리바운드 기회를 포착합니다.
이 추진력에 기반한 트렌드 다음 전략은 CMO 지표를 사용하여 시장 과잉 구매 및 과잉 판매 기회를 포착합니다. 전략 설계는 명확한 거래 규칙과 위험 통제 메커니즘으로 합리적입니다. 본질적인 위험이 있지만 최적화는 전략 안정성과 수익성을 더욱 향상시킬 수 있습니다. 전략은 특히 매우 변동적인 시장에 적합하며 명확한 트렌드 단계에서 좋은 수익을 얻을 수 있습니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Chande Momentum Oscillator Strategy", overlay=false) // Input for the CMO period cmoPeriod = input.int(9, minval=1, title="CMO Period") // Calculate price changes priceChange = ta.change(close) // Separate positive and negative changes up = priceChange > 0 ? priceChange : 0 down = priceChange < 0 ? -priceChange : 0 // Calculate the sum of ups and downs using a rolling window sumUp = ta.sma(up, cmoPeriod) * cmoPeriod sumDown = ta.sma(down, cmoPeriod) * cmoPeriod // Calculate the Chande Momentum Oscillator (CMO) cmo = 100 * (sumUp - sumDown) / (sumUp + sumDown) // Define the entry and exit conditions buyCondition = cmo < -50 sellCondition1 = cmo > 50 sellCondition2 = ta.barssince(buyCondition) >= 5 // Track if we are in a long position var bool inTrade = false if (buyCondition and not inTrade) strategy.entry("Long", strategy.long) inTrade := true if (sellCondition1 or sellCondition2) strategy.close("Long") inTrade := false // Plot the Chande Momentum Oscillator plot(cmo, title="Chande Momentum Oscillator", color=color.blue) hline(-50, "Buy Threshold", color=color.green) hline(50, "Sell Threshold", color=color.red)