EMA Dinamik dan Strategi Crossover MACD

Penulis:ChaoZhang, Tarikh: 2024-02-06 14:29:23
Tag:

img

Ringkasan

Strategi ini menentukan masuk dan keluar berdasarkan situasi persimpangan garis EMA yang cepat (3), garis EMA yang perlahan (11) dan garis EMA yang lebih perlahan (18), digabungkan dengan persimpangan garis sifar MACD.

Logika Strategi

Strategi ini terutamanya berdasarkan dua penunjuk analisis teknikal:

  1. EMA Crossover: Ia menggunakan persilangan EMA cepat (3), EMA perlahan (11) dan EMA perlahan (18) untuk menentukan trend dan sebagai isyarat kemasukan dan keluar.

  2. Indikator MACD dan Perpindahan Garis Sifarnya. MACD terdiri daripada DIFF dan DEA. DIFF dibina oleh EMA cepat (3) dikurangkan EMA perlahan (11). DEA adalah EMA (27) MACD. MACD>0 menunjukkan kenaikan dan MACD<0 menunjukkan penurunan. Perpindahan garis sifar bertindak sebagai isyarat kemasukan dan keluar.

Menurut gabungan persilangan EMA dan persilangan garis sifar MACD, terdapat 3 peluang masuk dan 2 peluang keluar:

  1. Peluang panjang pertama berlaku apabila MACD berada di atas garis sifar dan mempunyai persilangan menaik.
  2. Peluang panjang kedua berlaku apabila EMA cepat (3) melintasi di atas EMA perlahan (11).
  3. Peluang panjang ketiga dengan kedudukan penuh berlaku apabila EMA cepat (3) melintasi di atas EMA yang lebih perlahan (18).
  4. Isyarat keluar pertama berlaku apabila EMA cepat (3) melintasi di bawah EMA perlahan (11).
  5. Isyarat keluar kedua berlaku apabila MACD berada di bawah garis sifar dan mempunyai persilangan ke bawah.

Ringkasnya, strategi ini memanfaatkan sepenuhnya kelebihan sistem silang EMA berganda dan penunjuk MACD. Dengan menyesuaikan parameter purata bergerak dan MACD secara dinamik, ia dapat meningkatkan keuntungan strategi.

Kelebihan Strategi

  1. Ia menggunakan kekuatan kedua-dua crossover EMA dan penunjuk MACD, meningkatkan ketepatan melalui pengesahan dua penunjuk.

  2. Terdapat 3 peluang masuk panjang dan 2 peluang keluar, meningkatkan kekerapan perdagangan dan potensi keuntungan.

  3. Ruang yang besar untuk pengoptimuman parameter dinamik. panjang EMA pantas, EMA perlahan, EMA garis sifar dan MACD semua boleh dioptimumkan.

  4. Logik yang jelas menjadikannya mudah untuk debug dan mengoptimumkan.

Risiko Strategi

  1. Kedua-dua crossover EMA dan penunjuk MACD mempunyai beberapa isyarat palsu, yang boleh membawa kepada kerugian yang tidak perlu.

  2. Frekuensi perdagangan yang tinggi dengan saiz stop loss yang kecil dalam setiap perdagangan, jadi kerugian boleh terkumpul.

  3. Kesukaran dalam pengoptimuman parameter. pengoptimuman yang tidak betul boleh menyebabkan pemasangan berlebihan.

  4. Kesan kos perdagangan perlu dipertimbangkan sepenuhnya.

Untuk mengurangkan risiko:

  1. Tetapkan stop loss yang betul untuk mengehadkan kerugian dalam perdagangan tunggal.

  2. Sesuaikan parameter dengan sewajarnya untuk mengelakkan pemasangan berlebihan.

  3. Pertimbangkan kesan kos perdagangan, seperti mengurangkan kekerapan perdagangan.

Arahan untuk Pengoptimuman

  1. Alternatif ujian seperti Bollinger Bands, KDJ dan lain-lain.

  2. Mengoptimumkan parameter silang EMA: Mengubah panjang EMA cepat dan perlahan.

  3. Mengoptimumkan parameter MACD: Mengubah panjang EMA pengiraan DIFF dan DEA.

  4. Tambah strategi stop loss: bilangan perdagangan berhenti, berhenti masa, berhenti berturut-turut dan lain-lain

  5. Sesuaikan kekerapan kemasukan dengan mengambil kira kos dagangan.

Ringkasan

Strategi ini menggabungkan sistem crossover EMA berganda dan penunjuk MACD untuk membina strategi parameter dinamik dengan kekerapan perdagangan yang tinggi dan keuntungan yang kuat. Juga, logik yang jelas menjadikannya mudah difahami dan dioptimumkan. Tetapi terdapat juga risiko isyarat palsu dan terlalu sesuai yang perlu ditangani melalui langkah-langkah stop loss yang betul, anti-overfitting dan lain-lain. Secara keseluruhan, strategi ini mempunyai kegunaan praktikal yang besar.


/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-05 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MACD+EMA crossovers Strategy custom",initial_capital=10000,max_bars_back=150,commission_type=strategy.commission.percent , commission_value=0.1, shorttitle="MACD+EMAcross",pyramiding = 10,default_qty_type=strategy.percent_of_equity,default_qty_value=33,overlay=false)

short = ema(close,3)
long = ema(close, 11)
long2 = ema(close, 18)
//plot(short, color = red, linewidth = 4)
//plot(long, color = blue, linewidth = 4)
//plot(long2, color = green, linewidth = 4)

isCross1 = crossover(short, long)
isCross2 = crossover(short, long2)
isCrossSell = crossunder(short, long)
//isCross3 = crossover(long, long2)

//plotshape(isCross1 and not isCross2, color=lime, style=shape.arrowup, text="1st in",size = size.tiny, location = location.belowbar)
//plotshape(isCross2 , color=lime, style=shape.arrowup, text="2nd in",size = size.tiny, location = location.belowbar)

//plotshape(isCross3 , color=lime, style=shape.arrowdown, text="All in",size = size.normal, location = location.abovebar)

//plotshape(isCrossSell , color=red, style=shape.arrowdown, text="SELL",size = size.small, location = location.abovebar)

fastLength = input(3)
slowlength = input(11)
MACDLength = input(27)

MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength) //signal
delta = MACD - aMACD // histograma

strategy.entry("MacdLE 1st in", strategy.long, comment="MacdLE 1st in",when=crossover(delta, 0))

strategy.entry("2nd in", strategy.long, comment="2nd in",when=isCross1)

strategy.entry("all in", strategy.long, comment="all in",when=isCross2)

strategy.close("2nd in",when=isCrossSell) 
strategy.close("all in",when=isCrossSell)
//strategy.close("2nd in",when=crossunder(delta, 0)) 
//strategy.close("all in",when=crossunder(delta, 0))
strategy.close("MacdLE 1st in",when=crossunder(delta, 0)) 
    
histColour = (delta > 0) ? green : (delta < 0) ? red :  #4169E1
    
plot(MACD,color=red,linewidth=2)
plot(aMACD,color=blue,linewidth=2)
plot(delta,style=histogram, color=histColour, linewidth=10)
plot(0,color=white)






Lebih lanjut