
Strategi perdagangan rata-rata reversal berdasarkan oscillator dinamika Cande (CMO) adalah strategi analisis teknis untuk mengidentifikasi area overbought dan oversold dengan menghitung dinamika perubahan harga dalam jangka waktu tertentu. Strategi ini terutama dilakukan dengan memantau perubahan dinamika harga aset, melakukan perdagangan ketika harga mengalami penyimpangan ekstrem, untuk menangkap peluang harga untuk kembali ke nilai rata-rata.
Inti dari strategi ini adalah perhitungan dan penerapan indikator CMO. CMO mengukur momentum dengan menghitung perbedaan antara kenaikan dan penurunan dalam periode tertentu dengan rasio total. CMO = 100 × (Saturasi naik - turun) / (Saturasi naik + turun)
Berbeda dengan RSI tradisional, CMO menggunakan data bullish dan bearish secara bersamaan dalam molekul, memberikan pengukuran momentum yang lebih simetris. Strategi ini menganggap pasar oversold ketika CMO berada di bawah 50, dan mengharapkan harga akan naik kembali, sehingga melakukan lebih banyak posisi.
Strategi ini menggunakan indikator CMO untuk menangkap peluang overbought dan oversold di pasar, digabungkan dengan stop loss waktu tetap, untuk membangun sistem perdagangan yang stabil dengan nilai rata-rata yang kembali. Logika strategi jelas, kontrol risiko masuk akal, dan nilai praktis yang baik. Dengan lebih mengoptimalkan parameter dan menambahkan indikator tambahan, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut.
/*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)