Strategi Perdagangan Kuantitatif MACD

Penulis:ChaoZhang, Tanggal: 2023-12-19 15:11:57
Tag:

img

Gambaran umum

Strategi ini menggunakan indikator MACD untuk membangun sinyal perdagangan posisi panjang ketika MACD berada di bawah tingkat tertentu untuk memanfaatkan peluang pembalikan rata-rata.

Logika Strategi

Sinyal panjang dihasilkan ketika garis MACD berada di bawah garis SIGNAL dan nilai absolut MACD berada di bawah -0.00025. Setelah mengambil posisi panjang, jika garis MACD melintasi di atas garis SIGNAL lagi, posisi akan ditutup.

Strategi ini menggunakan indikator MACD untuk mendeteksi zona oversold. Menurut teori rata-rata bergerak, ada kemungkinan reversi rata-rata dalam jangka pendek, dan sinyal panjang ditetapkan berdasarkan probabilitas ini.

Keuntungan

  1. Menggunakan indikator MACD untuk menilai tingkat oversold, yang memiliki keandalan tertentu.
  2. Sinyal perdagangan sederhana dan aturan yang mudah diterapkan.
  3. Periode penyimpanan yang panjang berarti perdagangan yang kurang sering, mengurangi biaya transaksi dan slippage.

Risiko

  1. Risiko kegagalan berarti reversi.
  2. Sinyal yang tidak valid karena pilihan parameter MACD yang buruk.

Risiko ini dapat dikurangi melalui optimasi parameter.

Peningkatan

  1. Mengoptimalkan parameter MACD untuk menemukan kombinasi terbaik.
  2. Uji periode penyimpanan yang berbeda untuk menemukan durasi yang optimal.
  3. Tambahkan mekanisme stop loss.

Ringkasan

Strategi ini memanfaatkan probabilitas pengembalian rata-rata dari tingkat oversold yang diidentifikasi oleh indikator MACD untuk menghasilkan sinyal panjang, dan keuntungan melalui periode holding yang panjang. mengoptimalkan parameter MACD dan menambahkan stop loss meningkatkan keandalan.


//@version=3
strategy(title="MACD - EURUSD", shorttitle="MACD EURUSD")

// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source", defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)

longCond = crossover(macd, signal) and macd < -0.00025
exitLong = crossover(macd, hist)


strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)

Lebih banyak