Strategi Dagangan Kuantitatif MACD

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

img

Ringkasan

Strategi ini menggunakan penunjuk MACD untuk membina isyarat perdagangan kedudukan panjang apabila MACD berada di bawah tahap tertentu untuk memanfaatkan peluang pembalikan purata.

Logika Strategi

Isyarat panjang dihasilkan apabila garis MACD berada di bawah garis SIGNAL dan nilai mutlak MACD di bawah -0.00025. Selepas mengambil kedudukan panjang, jika garis MACD melintasi di atas garis SIGNAL lagi, kedudukan akan ditutup.

Strategi ini menggunakan penunjuk MACD untuk mengesan zon oversold. Menurut teori purata bergerak, terdapat kebarangkalian pembalikan purata dalam jangka pendek, dan isyarat panjang ditubuhkan berdasarkan kebarangkalian ini.

Kelebihan

  1. Menggunakan penunjuk MACD untuk menilai tahap oversold, yang mempunyai kebolehpercayaan tertentu.
  2. Isyarat perdagangan mudah dan peraturan yang mudah dilaksanakan.
  3. Tempoh penyimpanan yang panjang bermaksud perdagangan yang kurang kerap, mengurangkan kos transaksi dan slippage.

Risiko

  1. Risiko kegagalan bermaksud pembalikan. Ia akan membawa kepada kerugian jika tiada pembalikan berlaku.
  2. Isyarat tidak sah daripada pemilihan parameter MACD yang buruk.

Risiko ini boleh dikurangkan melalui optimalisasi parameter.

Peningkatan

  1. Mengoptimumkan parameter MACD untuk mencari kombinasi terbaik.
  2. Uji tempoh tahan yang berbeza untuk mencari tempoh yang optimum.
  3. Tambahkan mekanisme stop loss.

Ringkasan

Strategi ini menggunakan kebarangkalian pembalikan purata dari tahap oversold yang dikenal pasti oleh penunjuk MACD untuk menjana isyarat panjang, dan keuntungan melalui tempoh penahan yang panjang.


//@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 lanjut