Strategi Perdagangan Osilator CMO

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

Gambaran umum

Strategi ini menggunakan Chande Momentum Oscillator (CMO) untuk menentukan tingkat overbought dan oversold untuk sinyal perdagangan. Nilai CMO absolut selama 3 periode di rata-rata untuk meluruskan osilator untuk mengidentifikasi ekstrem.

Logika Strategi

Logika utama meliputi:

  1. Perhitungan nilai mutlak CMO selama 3 periode yang berbeda
  2. Mengambil rata-rata dari nilai mutlak CMO tiga periode
  3. Peningkatan short saat nilai rata-rata melebihi ambang batas atas
  4. Berjalan panjang ketika nilai rata-rata turun di bawah ambang bawah
  5. Posisi penutupan ketika CMO kembali ke kisaran normal

CMO mencerminkan momentum perubahan harga. Nilai absolut yang tinggi mewakili perbedaan harga memasuki zona overbought / oversold. Strategi ini memanfaatkan karakteristik CMO ini, menggunakan rata-rata multi-periode untuk meratakan kurva untuk mengidentifikasi ekstrem.

Keuntungan

  • Menggunakan CMO untuk mengidentifikasi wilayah yang terlalu banyak dibeli/terlalu banyak dijual
  • Rata-rata multi-periode meluruskan kurva dan menghindari sinyal palsu
  • Dasar teoritis yang kuat untuk deteksi overbought/oversold
  • Batas parameter yang dapat disesuaikan untuk disesuaikan
  • Implementasi reversi rata-rata sederhana

Risiko dan Pengurangan

  • Potensi sinyal CMO yang salah
  • Membutuhkan optimisasi ambang terus menerus
  • Ekstrim yang berkelanjutan selama tren dapat menyebabkan kerugian

Pengurangan:

  1. Menambahkan filter tren untuk menghindari perdagangan yang bertentangan dengan tren
  2. Optimasi parameter untuk sensitivitas CMO yang lebih baik
  3. Menggunakan stop untuk membatasi kerugian

Peluang Peningkatan

Strategi ini dapat ditingkatkan melalui:

  1. Konfirmasi volume untuk menghindari gangguan palsu
  2. Mengintegrasikan trailing stops untuk manajemen risiko yang lebih baik
  3. Otomatis mengoptimalkan parameter melalui pembelajaran mesin
  4. Ukuran posisi berdasarkan volatilitas
  5. Menggabungkan dengan strategi lain untuk mendiversifikasi dan meningkatkan hasil

Kesimpulan

Strategi ini menggunakan CMO untuk mengidentifikasi overbought / oversold untuk perdagangan reversi rata-rata. Rata-rata multi-periode membantu menghindari sinyal palsu. CMO sendiri memiliki dasar teoritis yang kuat untuk mengukur divergensi. Peningkatan melalui parameter yang lebih baik, berhenti, dan filter dapat membuatnya menjadi 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 banyak