전략의 핵심은 CMO 지표의 계산과 적용에 있습니다. CMO는 특정 기간 동안의 이익과 손실 사이의 차이와 그 합의 비율을 계산하여 모멘텀을 측정합니다. 공식은: CMO = 100 × (이익 합 - 손실 합) / (이익 합 + 손실 합)
전통적인 RSI와 달리, CMO는 분수에서 상향 및 하향 움직임을 모두 사용하여 보다 대칭적인 추진력을 측정합니다. 전략은 CMO가 -50 이하로 떨어지면 장기 포지션을 입력하여 과판 조건을 나타내고 가격 회복을 기대합니다. CMO가 50 이상이나 5 일 동안 보유한 후에 포지션은 종료됩니다.
이 전략은 CMO 지표를 통해 시장 과반 매수 및 과반 판매 기회를 포착하며, 고정 시간 스톱 로스를 결합하여 견고한 평균 반전 거래 시스템을 구축합니다. 실용적인 가치와 함께 명확한 논리 및 합리적인 위험 통제를 갖추고 있습니다. 전략의 안정성과 수익성은 매개 변수 최적화 및 추가 보조 지표로 추가로 향상 될 수 있습니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-09 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)