Strategi Dagangan MACD Pergerakan Purata Crossover

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

img

Ringkasan

Strategi perdagangan crossover purata bergerak MACD adalah strategi perdagangan kuantitatif yang mengesan situasi crossover purata bergerak eksponensial jangka pendek dan jangka panjang (EMA) dan membuat operasi beli dan jual apabila melintasi emas dan melintasi mati berlaku.

Logika Strategi

Strategi ini terutamanya bergantung pada 12 hari EMA, 26 hari EMA dan penunjuk MACD. Logik tertentu adalah:

  1. Mengira EMA 12 hari dan EMA 26 hari.
  2. Mengira MACD (iaitu, EMA 12 hari dikurangkan EMA 26 hari).
  3. Mengira EMA 9 hari MACD sebagai garis isyarat.
  4. Apabila MACD melebihi garis isyarat, isyarat beli dihasilkan.
  5. Apabila MACD jatuh di bawah garis isyarat, isyarat jual dihasilkan.
  6. Buat operasi beli atau jual yang sepadan pada penutupan candlestick kedua selepas isyarat dihasilkan.

Di samping itu, strategi ini juga menetapkan beberapa syarat penapisan:

  1. Waktu dagangan adalah masa bukan penutupan setiap hari dagangan.
  2. Nilai mutlak perbezaan antara MACD dan garis isyarat perlu lebih besar daripada 0.08.
  3. Hanya satu arah kedudukan dibenarkan pada satu masa.

Analisis Kelebihan

Strategi ini menggabungkan crossover purata bergerak dan penunjuk MACD, yang dapat menangkap dengan berkesan titik perubahan trend pasaran jangka pendek dan sederhana.

  1. Peraturan strategi adalah mudah dan jelas, mudah difahami dan dilaksanakan.
  2. Parameter penunjuk dioptimumkan untuk prestasi yang agak stabil.
  3. Ia mengambil kira pengesanan trend jangka sederhana dan jangka pendek dan keluar stop loss yang tepat pada masanya.
  4. Logik perdagangan adalah ketat untuk mengelakkan perdagangan yang tidak sah.

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Risiko pemasangan data yang berlebihan. Penggunaan sebenar mungkin memerlukan pelarasan parameter dan ambang.
  2. Risiko kos yang tinggi dari perdagangan yang kerap.
  3. Risiko kerugian daripada kegagalan untuk keluar tepat pada masanya apabila trend berbalik.
  4. Peningkatan risiko leverage yang wujud dalam perdagangan kuantitatif itu sendiri.

Kaedah pengurangan yang sepadan:

  1. Mengoptimumkan parameter secara dinamik dan menyesuaikan ambang.
  2. Meredakan peraturan perdagangan yang sewajarnya untuk mengurangkan perdagangan yang tidak perlu.
  3. Gabungkan lebih banyak penunjuk untuk menilai isyarat pembalikan.
  4. Kawal kedudukan dan leverage dengan ketat.

Arahan pengoptimuman

Aspek utama untuk mengoptimumkan strategi ini termasuk:

  1. Uji kombinasi purata bergerak kitaran yang lebih lama untuk mencari parameter optimum.
  2. Tambah asas seperti prestasi kewangan, peristiwa penting dan lain-lain sebagai penapis.
  3. Masukkan lebih banyak penunjuk untuk menentukan masa pembalikan trend, seperti Bollinger Bands, KDJ dll.
  4. Membangunkan mekanisme stop loss, secara aktif mengurangkan kerugian apabila kerugian mencapai titik stop loss yang telah ditetapkan.
  5. Tambah nisbah pengambilan untuk mengawal pengambilan maksimum.

Ringkasan

Strategi perdagangan crossover purata bergerak MACD menjana isyarat perdagangan melalui penjejakan trend yang mudah dan berkesan mengawal risiko dengan keadaan penapisan yang sesuai.


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