Strategi Perdagangan Osilator CMO

Penulis:ChaoZhang, Tarikh: 2023-09-19 21:16:26
Tag:

Ringkasan

Strategi ini menggunakan Chande Momentum Oscillator (CMO) untuk menentukan tahap overbought dan oversold untuk isyarat perdagangan. Nilai CMO mutlak selama 3 tempoh adalah purata untuk meluruskan osilator untuk mengenal pasti ekstrem.

Logika Strategi

Logik utama termasuk:

  1. Pengiraan nilai mutlak CMO untuk 3 tempoh yang berbeza
  2. Mengambil purata nilai mutlak PKS tiga tempoh
  3. Peringkat pendek apabila nilai purata melebihi ambang atas
  4. Memegang jangka panjang apabila nilai purata jatuh di bawah ambang bawah
  5. Posisi penutupan apabila CMO kembali ke julat normal

CMO mencerminkan momentum perubahan harga. Nilai mutlak yang tinggi mewakili perbezaan harga memasuki zon overbought / oversold. Strategi ini menggunakan ciri CMO ini, menggunakan purata pelbagai tempoh untuk meluruskan kurva untuk mengenal pasti ekstrem.

Kelebihan

  • Menggunakan CMO untuk mengenal pasti kawasan yang terlalu banyak dibeli/terlalu banyak dijual
  • Purata pelbagai tempoh meluruskan lengkung dan mengelakkan isyarat palsu
  • Asas teori yang kukuh untuk pengesanan overbought/oversold
  • Sempadan parameter yang boleh disesuaikan untuk disesuaikan
  • Pelaksanaan pembalikan purata yang mudah

Risiko dan Pengurangan

  • Potensi isyarat CMO palsu
  • Memerlukan pengoptimuman ambang berterusan
  • Ekstrem yang berterusan semasa trend boleh menyebabkan kerugian

Pengurangan:

  1. Menambah penapis trend untuk mengelakkan perdagangan yang bertentangan dengan trend
  2. Pengoptimuman parameter untuk kepekaan CMO yang lebih baik
  3. Menggunakan hentian untuk mengehadkan kerugian

Peluang Peningkatan

Strategi ini boleh dipertingkatkan melalui:

  1. Pengesahan jumlah untuk mengelakkan pecah palsu
  2. Memasukkan hentian pengangkutan untuk pengurusan risiko yang lebih baik
  3. Pengoptimuman automatik parameter melalui pembelajaran mesin
  4. Pengukuran kedudukan berdasarkan turun naik
  5. Menggabungkan dengan strategi lain untuk mempelbagaikan dan meningkatkan pulangan

Kesimpulan

Strategi ini menggunakan CMO untuk mengenal pasti overbought / oversold untuk perdagangan pembalikan purata. Purata pelbagai tempoh membantu mengelakkan isyarat palsu. CMO sendiri mempunyai asas teori yang kukuh untuk mengukur perbezaan. Peningkatan melalui parameter, berhenti, dan penapis yang lebih baik dapat menjadikannya strategi perdagangan osilator yang stabil.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-14 07:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////7////////////
//  Copyright by HPotter v1.0 21/02/2017
//    This indicator plots the absolute value of CMO averaged over three 
//    different lengths. This indicator plots a classical-looking oscillator, 
//    which is really an averaged value based on three different periods.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="CMOabsav", shorttitle="CMOabsav")
Length1 = input(5, minval=1)
Length2 = input(10, minval=1)
Length3 = input(20, minval=1)
TopBand = input(58, minval=1)
LowBand = input(5, minval=0)
reverse = input(false, title="Trade reverse")
hline(0, color=green, linestyle=hline.style_dashed)
hline(TopBand, color=purple, linestyle=hline.style_solid)
hline(LowBand, color=red, linestyle=hline.style_solid)
xMom = close - close[1]
xMomabs = abs(close - close[1])
nSum1 = sum(xMom, Length1)
nSumAbs1 = sum(xMomabs, Length1)
nSum2 = sum(xMom, Length2)
nSumAbs2 = sum(xMomabs, Length2)
nSum3 = sum(xMom, Length3)
nSumAbs3 = sum(xMomabs, Length3)
nRes = abs(100 * (nSum1 / nSumAbs1 + nSum2 / nSumAbs2 + nSum3 / nSumAbs3 ) / 3)
pos = iff(nRes > TopBand, 1,
	     iff(nRes < LowBand, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nRes, color=blue, title="CMOabsav")

Lebih lanjut