Strategi Trading Mean-Reversion yang didasarkan pada Chande Momentum Oscillator (CMO) adalah strategi analisis teknis yang mengidentifikasi zona overbought dan oversold dengan menghitung momentum harga selama periode tertentu. Strategi ini memantau perubahan momentum dalam harga aset dan perdagangan ketika harga menunjukkan penyimpangan ekstrem, bertujuan untuk menangkap peluang reversi rata-rata.
Inti dari strategi terletak pada perhitungan dan penerapan indikator CMO. CMO mengukur momentum dengan menghitung rasio perbedaan antara keuntungan dan kerugian terhadap jumlahnya selama periode tertentu. Rumusnya adalah: CMO = 100 × (Sum of Gains - Sum of Losses) / ((Sum of Gains + Sum of Losses)
Tidak seperti RSI tradisional, CMO menggunakan pergerakan naik dan turun dalam pembilang, memberikan pengukuran momentum yang lebih simetris. Strategi memasuki posisi panjang ketika CMO turun di bawah -50, menunjukkan kondisi oversold dan mengharapkan pemulihan harga. Posisi ditutup ketika CMO naik di atas 50 atau setelah memegang selama 5 hari.
Strategi ini menangkap peluang overbought dan oversold pasar melalui indikator CMO, menggabungkan stop-loss waktu tetap untuk membangun sistem perdagangan reversi rata-rata yang kuat. Ini memiliki logika yang jelas dan kontrol risiko yang wajar dengan nilai praktis. Stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut melalui optimasi parameter dan indikator tambahan.
/*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)