Strategi perdagangan MACD Crossover Moving Average

Penulis:ChaoZhang, Tanggal: 2024-02-22 16:25:13
Tag:

img

Gambaran umum

Strategi perdagangan crossover rata-rata bergerak MACD adalah strategi perdagangan kuantitatif yang melacak situasi crossover rata-rata bergerak eksponensial jangka pendek dan jangka panjang (EMA) dan melakukan operasi beli dan jual ketika golden cross dan dead cross terjadi.

Logika Strategi

Strategi ini terutama didasarkan pada EMA 12 hari, EMA 26 hari dan indikator MACD. Logika spesifiknya adalah:

  1. Menghitung EMA 12 hari dan EMA 26 hari.
  2. Menghitung MACD (yaitu, EMA 12 hari dikurangi EMA 26 hari).
  3. Hitung EMA 9 hari MACD sebagai garis sinyal.
  4. Ketika MACD naik di atas garis sinyal, sinyal beli dihasilkan.
  5. Ketika MACD jatuh di bawah garis sinyal, sinyal jual dihasilkan.
  6. Lakukan operasi jual beli yang sesuai pada penutupan candlestick kedua setelah sinyal dihasilkan.

Selain itu, strategi ini juga menetapkan beberapa kondisi penyaringan:

  1. Waktu perdagangan adalah waktu non-penutupan setiap hari perdagangan.
  2. Nilai absolut perbedaan antara MACD dan garis sinyal harus lebih besar dari 0,08.
  3. Hanya satu arah posisi yang diizinkan pada suatu waktu.

Analisis Keuntungan

Strategi ini menggabungkan crossover rata-rata bergerak dan indikator MACD, yang dapat secara efektif menangkap titik perubahan tren pasar jangka pendek dan jangka menengah.

  1. Aturan strategi sederhana dan jelas, mudah dimengerti dan diterapkan.
  2. Parameter indikator dioptimalkan untuk kinerja yang relatif stabil.
  3. Hal ini memperhitungkan pelacakan tren jangka menengah dan pendek dan exit stop loss yang tepat waktu.
  4. Logika perdagangan adalah ketat untuk menghindari perdagangan yang tidak valid.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Risiko overfit data backtesting. aplikasi yang sebenarnya mungkin memerlukan penyesuaian parameter dan ambang batas.
  2. Risiko biaya tinggi karena sering berdagang.
  3. Risiko kerugian akibat kegagalan untuk keluar tepat waktu ketika tren berbalik.
  4. Amplifikasi risiko leverage yang melekat pada perdagangan kuantitatif itu sendiri.

Metode mitigasi yang sesuai:

  1. Optimalkan parameter secara dinamis dan sesuaikan ambang batas.
  2. Meredakan aturan perdagangan yang tepat untuk mengurangi perdagangan yang tidak perlu.
  3. Gabungkan lebih banyak indikator untuk menilai sinyal pembalikan.
  4. Mengontrol posisi dan leverage.

Arahan Optimasi

Aspek utama untuk mengoptimalkan strategi ini meliputi:

  1. Uji kombinasi rata-rata bergerak siklus yang lebih lama untuk menemukan parameter optimal.
  2. Tambahkan fundamental seperti kinerja keuangan, peristiwa penting dll sebagai filter.
  3. Masukkan lebih banyak indikator untuk menentukan waktu pembalikan tren, seperti Bollinger Bands, KDJ dll.
  4. Mengembangkan mekanisme stop loss. secara aktif memotong kerugian ketika kerugian mencapai titik stop loss yang telah ditetapkan sebelumnya.
  5. Tambahkan rasio penarikan untuk mengontrol penarikan maksimum.

Ringkasan

Strategi perdagangan crossover rata-rata bergerak MACD menghasilkan sinyal perdagangan melalui pelacakan tren sederhana dan secara efektif mengontrol risiko dengan kondisi penyaringan yang tepat. Ini adalah strategi perdagangan kuantitatif yang efektif. Strategi dapat ditingkatkan dengan cara seperti optimasi parameter, menambahkan mekanisme stop loss, menggabungkan lebih banyak indikator tambahan dll.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMMA", max_bars_back = 200)

var up1 = #26A69A
var up2 = #B2DFDB
var down1 = #FF5252
var down2 = #FFCDD2
var confirmationLength = 2

var earliest = timestamp("20 Jan 2024 00:00 +0000")

// Regn u
shortEMA = ta.ema(close, 12)
longEMA = ta.ema(close, 26)
macd = shortEMA - longEMA
signal = ta.ema(macd, 9)
delta = macd - signal
absDelta = math.abs(delta)
previousDelta = delta[1]

signalCrossover = ta.crossover(macd, signal)
signalCrossunder = ta.crossunder(macd, signal)

harskiftetdag = hour(time[confirmationLength]) > hour(time)

enterLongSignal = signalCrossover[confirmationLength] and (macd > signal) and (absDelta >= 0.08)
exitLongSignal = signalCrossunder[confirmationLength] and (macd < signal)

enterShortSignal = signalCrossunder[confirmationLength] and (macd < signal) and (absDelta >= 0.08)
exitShortSignal = signalCrossover[confirmationLength] and (macd > signal)

// Så er det tid til at købe noe
qty = math.floor(strategy.equity / close)

if time >= earliest and not harskiftetdag
    if exitLongSignal 
        strategy.close("long")
    else if enterLongSignal
        strategy.close("short")
        strategy.entry("long", strategy.long, qty = qty)

    if exitShortSignal
        strategy.close("short")
    else if enterShortSignal
        strategy.close("long")
        strategy.entry("short", strategy.short, qty = qty)

// Så er det tid til at vise noe

plot(macd, color=color.blue)
plot(signal, color=color.orange)

// bgcolor(color = delta > 0.1 ? color.new(color.green, 90) : color.new(color.green, 100))
// bgcolor(color = signalCrossover ? color.purple : signalCrossunder ? color.aqua : color.new(color.green, 100))

histogramColor = delta > 0 ? (previousDelta < delta ? up1 : up2) : (previousDelta > delta ? down1 : down2)

plot(
     delta,
     style=plot.style_columns,
     color=histogramColor
     )

Lebih banyak