Strategi perdagangan purata bergerak ganda adalah strategi perdagangan kuantitatif yang menggunakan purata bergerak dari dua kitaran yang berbeza untuk membina isyarat perdagangan. Strategi ini mempunyai kesan pengesanan yang baik dalam keadaan yang bergaya dengan menilai trend dan peluang pasaran dengan mengira hubungan antara dua purata bergerak.
Strategi ini menggunakan dua rata-rata bergerak untuk analisis indikator teknikal. Strategi ini menentukan rata-rata bergerak 5 hari untuk tempoh yang lebih pendek, ma0, dan rata-rata bergerak 21 hari untuk tempoh yang lebih lama, ma1. Strategi ini menilai keadaan trend semasa dengan membandingkan harga dengan perbezaan osc0 dan ma0 dan perbezaan osc1 dengan ma1.
Apabila osc0> 0 dan osc1> 0, menunjukkan bahawa garis purata jangka pendek telah naik melalui garis purata jangka panjang, termasuk perdagangan bertopeng; apabila osc0 < 0 dan osc1 < 0, menunjukkan bahawa garis purata jangka pendek telah turun melalui garis purata jangka panjang, termasuk perdagangan kosong.
Selepas membuka kedudukan, strategi menilai ruang keuntungan memegang kedudukan dengan memantau perubahan masa nyata osc0 dan osc1. Apabila osc0<0 dan osc1<0 selepas memegang kedudukan berbilang, menunjukkan pembalikan trend, dan kedudukan berbilang dipadamkan; Apabila osc0>0 dan osc1>0 selepas memegang kedudukan kosong, menunjukkan pembalikan trend, dan kedudukan kosong dipadamkan.
Strategi perdagangan purata bergerak berganda mempunyai kelebihan berikut:
Kaedah ini mudah digunakan, mudah difahami, dan sesuai untuk pemula dalam perdagangan kuantitatif.
Perdagangan yang berjalan lancar, mengikuti trend, dan mendapat keuntungan yang lebih baik;
Dengan menyesuaikan parameter kitaran rata-rata bergerak, ia boleh disesuaikan dengan ciri-ciri pasaran yang berbeza;
Ia boleh digunakan bersama-sama dengan petunjuk lain atau gabungan strategi untuk meningkatkan ruang keuntungan.
Terdapat juga beberapa risiko dalam strategi perdagangan purata bergerak berganda:
Apabila trend berbalik, tidak dapat menghentikan kerugian dalam masa yang tepat, ia boleh menyebabkan kerugian yang lebih besar;
Dalam keadaan gegaran, ia adalah lebih sukar untuk dicapai.
Parameter yang lebih sukar untuk dioptimumkan, 5 dan 21 bukanlah parameter yang optimum;
Isyarat perdagangan yang terlewat, kemasukan yang lewat, boleh menjejaskan kadar keuntungan.
Strategi perdagangan purata bergerak berganda boleh dioptimumkan dalam beberapa aspek berikut:
Menentukan permulaan trend sebenar dengan menggunakan VOL untuk mengelakkan penembusan palsu;
Menambah kriteria tambahan, seperti penembusan harga, peningkatan jumlah transaksi, dan lain-lain, untuk memastikan kebolehpercayaan isyarat perdagangan;
Mengendalikan kerugian dalam jangka masa yang tepat;
Mengoptimumkan nilai parameter untuk perbezaan purata bergerak, mengurangkan kadar kesilapan.
Menggunakan kaedah pembelajaran mesin untuk mengoptimumkan secara automatik parameter kitaran purata bergerak.
Strategi perdagangan rata-rata bergerak ganda secara keseluruhan adalah strategi trend yang lebih klasik dan praktikal. Strategi ini mudah dikendalikan, sesuai untuk latihan pemula perdagangan kuantitatif; secara kebetulan, kesan pengesanan yang lebih baik; boleh diperluas, mudah digabungkan dengan indikator teknikal dan strategi lain. Tetapi strategi ini juga mempunyai kelemahan tertentu, dan perlu dioptimumkan lebih lanjut untuk menangani tingkah laku yang tidak normal, mengurangkan risiko, dan meningkatkan kestabilan.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("[STRATEGY][RS]MA Strategy test V0", overlay=true)
length0 = input(5)
length1 = input(21)
isinsession = not na(time('1', '0400-1500'))
price = open
ma0 = ema(ema(price, length0), length0)
ma1 = ema(ema(price, length1), length1)
plot(ma0, color=navy)
plot(ma1, color=black)
osc0 = price-ma0
osc1 = ma0-ma1
isbull = osc0 > 0 and osc1 > 0
buy_condition = isinsession and isbull and not isbull[1]
buy_exit_condition = osc0 < 0 and osc1 < 0
strategy.entry("buy", strategy.long, comment="buy", when=buy_condition)
strategy.close(id='buy', when=buy_exit_condition)
isbear = osc0 < 0 and osc1 < 0
sell_condition = isinsession and isbear and not isbear[1]
sell_exit_condition = osc0 > 0 and osc1 > 0
strategy.entry("sell", strategy.short, comment="sell", when=sell_condition)
strategy.close(id='sell', when=sell_exit_condition)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)