Strategi Perdagangan Pembalikan Purata berdasarkan Osilator Momentum Chande (CMO) adalah strategi analisis teknikal yang mengenal pasti zon overbought dan oversold dengan mengira momentum harga dalam tempoh tertentu. Strategi ini memantau perubahan momentum dalam harga aset dan perdagangan apabila harga menunjukkan penyimpangan yang melampau, bertujuan untuk menangkap peluang pembalikan purata. Ia menggunakan penunjuk CMO 9 hari sebagai isyarat teras, memasuki kedudukan panjang apabila CMO jatuh di bawah -50 dan keluar apabila CMO meningkat di atas 50 atau tempoh pegangan melebihi 5 hari.
Inti strategi terletak pada pengiraan dan penerapan penunjuk CMO. CMO mengukur momentum dengan mengira nisbah perbezaan antara keuntungan dan kerugian kepada jumlah mereka dalam tempoh tertentu. Rumusnya adalah: CMO = 100 × (Jumlah Keuntungan - Jumlah Kerugian) / ((Jumlah Keuntungan + Jumlah Kerugian)
Tidak seperti RSI tradisional, CMO menggunakan kedua-dua pergerakan ke atas dan ke bawah dalam pembilang, menyediakan pengukuran momentum yang lebih simetri. Strategi memasuki kedudukan panjang apabila CMO jatuh di bawah -50, menunjukkan keadaan oversold dan mengharapkan pemulihan harga. Posisi ditutup apabila CMO naik di atas 50 atau selepas memegang selama 5 hari.
Strategi ini menangkap peluang overbought dan oversold pasaran melalui penunjuk CMO, menggabungkan stop-loss masa tetap untuk membina sistem perdagangan pembalikan purata yang kukuh. Ia mempunyai logika yang jelas dan kawalan risiko yang munasabah dengan nilai praktikal. Kestabilan dan keuntungan strategi dapat ditingkatkan lagi melalui pengoptimuman parameter dan penunjuk tambahan 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)