Strategi ini adalah sistem perdagangan trend-mengikut berdasarkan Chande Momentum Oscillator (CMO). Ia mencari peluang membeli di kawasan yang terlalu banyak dijual dan peluang menjual di kawasan yang terlalu banyak dibeli, sambil menggabungkan had masa memegang kedudukan untuk pengurusan risiko. Pendekatan ini membolehkan menangkap pembalikan harga sambil mengelakkan perdagangan yang kerap di pasaran yang berbeza.
Inti strategi menggunakan penunjuk CMO untuk mengukur momentum pasaran. CMO menghasilkan osilator yang berkisar dari -100 hingga 100 dengan mengira nisbah perbezaan antara pergerakan menaik dan menurun kepada jumlah mereka. Sistem menghasilkan isyarat panjang apabila CMO jatuh di bawah -50, menunjukkan keadaan pasaran yang terlalu banyak dijual. Posisi ditutup apabila CMO melebihi 50 atau apabila tempoh pegangan melebihi 5 kitaran. Reka bentuk ini menangkap peluang pemulihan harga sambil melaksanakan langkah mengambil keuntungan dan menghentikan kerugian tepat pada masanya.
Strategi ini menggunakan indikator CMO untuk menangkap peluang overbought dan oversold pasaran. Reka bentuk strategi adalah rasional, dengan peraturan perdagangan yang jelas dan mekanisme kawalan risiko. Walaupun terdapat risiko yang melekat, pengoptimuman dapat meningkatkan kestabilan dan keuntungan strategi. Strategi ini sangat sesuai untuk pasaran yang sangat tidak menentu dan dapat mencapai pulangan yang baik semasa fasa trend yang jelas.
/*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)