Strategi silang purata bergerak berganda

Penulis:ChaoZhang, Tarikh: 2023-11-13 10:55:09
Tag:

img

Ringkasan

Strategi crossover purata bergerak berganda adalah strategi trend berikut yang biasa. Ia menggunakan dua purata bergerak dari tempoh yang berbeza untuk mengenal pasti arah trend dan menjana isyarat perdagangan berdasarkan persilangan mereka. Khususnya, apabila purata bergerak tempoh yang lebih pendek melintasi di atas tempoh yang lebih lama, salib emas terbentuk, yang menunjukkan trend menaik. Sebaliknya, apabila MA yang lebih pendek melintasi di bawah MA yang lebih lama, salib kematian terbentuk, yang menunjukkan trend menurun.

Logika Strategi

Strategi ini terutamanya menggunakan garis EMA 6-period, 14-period, 25-period dan 80-period. Ia mula-mula mengira nilai-nilai MA ini, kemudian mengenal pasti arah trend berdasarkan persilangan antara EMA 6-period dan tiga MA yang lain.

Apabila EMA 6 tempoh melintasi di atas EMA 14 tempoh atau 25 tempoh, dan di atas EMA 80 tempoh, isyarat beli dihasilkan. Ini menunjukkan MA jangka pendek sedang memecahkan MA jangka menengah hingga panjang, dan trend menaik mungkin bermula, jadi kita boleh mempertimbangkan untuk membeli.

Sebaliknya, apabila EMA 6 tempoh melintasi di bawah EMA 14 tempoh atau 25 tempoh, dan ia di bawah EMA 80 tempoh, isyarat jual dihasilkan. Ini menunjukkan MA jangka pendek dipecahkan oleh MA jangka sederhana hingga panjang, dan trend menurun mungkin bermula, jadi kita boleh mempertimbangkan untuk menjual.

Apabila isyarat dihasilkan, strategi akan membuka kedudukan panjang atau pendek. Ia juga mempunyai logik stop loss untuk keluar dari kedudukan apabila kerugian melebihi ambang untuk mengawal risiko.

Analisis Kelebihan

Kelebihan strategi ini ialah:

  1. Menggunakan persilangan MA untuk menentukan trend adalah penunjuk teknikal yang matang dan boleh dipercayai.

  2. Menggabungkan beberapa bingkai masa mengurangkan isyarat palsu. MA 6 tempoh menghasilkan isyarat, manakala MA 14 tempoh, 25 tempoh mengesahkan, dan MA 80 tempoh menentukan trend keseluruhan.

  3. Stop loss mengawal risiko dan melindungi modal dengan berkesan.

  4. Logiknya mudah dan jelas, mudah difahami dan disahkan.

  5. Tempoh MA boleh disesuaikan untuk mengoptimumkan keadaan pasaran yang berubah.

Analisis Risiko

Beberapa risiko strategi ini termasuk:

  1. Harga boleh mengelilingi MA semasa julat, menghasilkan isyarat yang tidak sah yang berlebihan.

  2. Stop loss tetap mungkin terlalu tegar. Pertimbangkan untuk menggunakan trailing stop atau stop dinamik sebaliknya.

  3. Risiko kerugian berhenti dipukul oleh jurang harga tiba-tiba. Tambah logik tambahan untuk melangkau kerugian berhenti dalam kes sedemikian.

  4. Tidak dapat bertindak balas terhadap turun naik harga jangka pendek Tambah penapis menggunakan penunjuk lain.

  5. Ruang pengoptimuman terhad. Pertimbangkan menggunakan purata bergerak adaptif.

Arahan pengoptimuman

Beberapa cara untuk mengoptimumkan strategi:

  1. Uji kombinasi tempoh MA yang berbeza untuk mencari parameter yang lebih sensitif kepada pasaran.

  2. Meningkatkan mekanisme stop loss menggunakan trailing atau stop dinamik untuk mengurangkan risiko stop run.

  3. Tambah penunjuk penapis seperti KDJ, MACD untuk mengelakkan perdagangan berlebihan semasa julat.

  4. Mengoptimumkan peraturan kemasukan, menunggu MA crossover untuk membentuk sepenuhnya sebelum memasuki untuk mengurangkan isyarat palsu.

  5. Menggunakan purata bergerak adaptif yang menyesuaikan tempoh secara automatik berdasarkan turun naik.

  6. Tambahkan peraturan saiz kedudukan untuk menyesuaikan saiz kedudukan berdasarkan keadaan pasaran.

  7. Menggabungkan keuntungan mengambil keluar.

Ringkasan

Ringkasnya, strategi crossover purata bergerak berganda ini mengenal pasti arah trend dengan mudah berdasarkan logik crossover MA yang mudah, dan mempunyai risiko yang boleh dikawal. Ia sesuai untuk mengesan trend jangka menengah hingga panjang. Tetapi strategi ini mempunyai ruang yang cukup untuk pengoptimuman, melalui peraturan kemasukan, teknik stop loss, keadaan penapis dll. Secara keseluruhan ia berfungsi sebagai trend asas yang kukuh mengikuti strategi, dengan kebaikan dan keburukan yang munasabah.


/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = " bhramaji EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(true,"UseStopLoss")


stopLoss = input(20, title = "Stop loss percentage(0.1%)")


maSource   = input(defval = close, title = "MA Source")
maLength6   = input(defval = 6, title = "MA Period 6", minval = 1)
maLength14  = input(defval = 14, title = "MA Period 14", minval = 1)
maLength25  = input(defval = 25, title = "MA Period 25", minval = 1)
maLength80  = input(defval = 80, title = "MA Period 80", minval = 1)

ma6 = ema(maSource, maLength6)
ma14 = ema(maSource, maLength14)
ma25 = ema(maSource, maLength25)
ma80 = ema(maSource, maLength80)

ma_6_plot = plot(ma6 , title = "MA  6", color = red, linewidth = 2, style = line, transp = 50)
ma14_plot = plot(ma14, title = "MA 14", color = green, linewidth = 2, style = line, transp = 50)
ma25_plot = plot(ma25, title = "MA 25", color = blue, linewidth = 2, style = line, transp = 50)
ma80_plot = plot(ma80, title = "MA 80", color = silver, linewidth = 2, style = line, transp = 50)


longEMA = (crossover(ma6, ma14) or crossover(ma6, ma25)) and (ma6>ma80) 
exitLong = (crossunder(ma6, ma14) or crossunder(ma6, ma25)) 

shortEMA = (crossunder(ma6, ma14) or crossunder(ma6, ma25)) and (ma6< ma80)
exitShort =(crossover(ma6, ma14) or crossover(ma6, ma25))

if (longEMA)
    strategy.entry("LongId", strategy.long)
 
if (shortEMA)
    strategy.entry("ShortId", strategy.short)

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)





Lebih lanjut