
Strategi ini adalah sistem perdagangan trend-tracking yang berdasarkan pada indikator pergerakan pergerakan Chad (CMO). Strategi ini mencari peluang membeli di kawasan oversold dan mencari peluang menjual di kawasan oversold dengan menggunakan pengiraan dan analisis pergerakan harga.
Inti strategi ini adalah menggunakan indikator CMO untuk mengukur pergerakan pasaran. CMO menghasilkan nilai indikator yang bergoyang antara -100 dan -100 dengan mengira perbandingan antara kenaikan dan penurunan dengan jumlah keseluruhan. Apabila CMO berada di bawah -50, yang menunjukkan bahawa pasaran berada dalam keadaan oversold, sistem akan mengeluarkan banyak isyarat. Apabila CMO melebihi 50 atau memegang lebih dari 5 kitaran, sistem akan keluar dari kedudukan.
Ini adalah strategi pengesanan trend berdasarkan momentum untuk menangkap peluang jual beli yang berlebihan di pasaran melalui indikator CMO. Strategi ini direka dengan munasabah, mempunyai peraturan perdagangan yang jelas dan mekanisme kawalan risiko. Walaupun terdapat beberapa risiko yang wujud, dengan pengoptimuman, kestabilan dan keuntungan strategi dapat ditingkatkan lagi.
/*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)