
Strategi perdagangan berganda adalah strategi perdagangan kuantitatif yang menggunakan garpu berganda dan garpu mati untuk menilai masuk dan keluar. Strategi ini menggabungkan garpu berganda dengan kitaran yang berbeza, membentuk penapis berlapis, yang dapat mengurangkan isyarat palsu dan meningkatkan kebolehpercayaan isyarat perdagangan.
Logik teras strategi ini adalah untuk mengesan 2 purata bergerak dalam 3 kitaran masa ((180 minit, 60 minit, 120 minit) ((10 hari dan 200 hari) apabila garis pantas melintasi garis perlahan dari arah bawah, menghasilkan isyarat garpu emas, yang mewakili varieti masuk ke dalam pergerakan bermulut; apabila garis pantas melintasi garis perlahan dari arah atas, menghasilkan isyarat garpu mati, yang mewakili varieti masuk ke dalam pergerakan kosong
Strategi ini bermula dengan mengira garis 10 hari dan garis 200 hari pada kitaran 180 minit dan 60 minit. Apabila garis 10 hari 180 minit melintasi garis 200 hari dari arah bawah, ia menghasilkan isyarat garpu emas; apabila ia melintasi dari arah atas ke bawah, ia menghasilkan isyarat garpu mati.
Kemudian, strategi memperkenalkan garis 200 hari dalam kitaran 120 minit sebagai garis kawalan. Hanya apabila garpu emas atau garpu mati berlaku, keputusan untuk memulakan perdagangan dibuat dengan menilai sama ada garis 200 hari dalam kitaran 60 minit lebih tinggi atau lebih rendah daripada garis 200 hari dalam kitaran 120 minit untuk menghapuskan beberapa isyarat palsu.
Sebagai contoh, apabila 180 minit menghasilkan garpu emas, anda akan melihat lebih banyak jika garis 200 minit 60 lebih tinggi daripada garis 200 minit 120; hanya dalam keadaan ini, anda akan membuka lebih banyak. Sebaliknya, jika garis 200 minit 60 lebih rendah daripada garis 200 minit 120 anda tidak akan melihat lebih banyak dan tidak akan membuka kedudukan.
Ringkasnya, strategi ini membentuk pelbagai lapisan penapisan dengan membandingkan hubungan rata-rata dalam tempoh masa yang berbeza, dan dengan itu meningkatkan kebolehpercayaan isyarat, dan merupakan strategi perdagangan jenis penapisan yang biasa.
Pengesahan pelbagai kitaran, meningkatkan ketepatan isyarat. Berbanding dengan penghakiman satu kitaran, strategi ini menggunakan hubungan rata-rata tiga kitaran 180 minit, 60 minit dan 120 minit untuk pengesahan, yang dapat mengurangkan isyarat palsu dan meningkatkan kualiti isyarat perdagangan.
Operasi frekuensi sederhana. Berbanding dengan strategi perdagangan frekuensi tinggi, strategi ini mempunyai frekuensi perdagangan yang lebih rendah, tidak memerlukan operasi yang kerap, dan lebih sesuai untuk pengesanan manual.
Strategi ini hanya menggunakan penunjuk rata-rata, tidak ada logik yang rumit, sangat mudah difahami, ambang rendah, sesuai untuk pemula.
Boleh dioptimumkan mengikut kitaran dan parameter yang berbeza. Kitaran dan jenis garis rata dalam strategi ini boleh disesuaikan, dan kombinasi parameter yang sesuai untuk pelbagai jenis dan keadaan pasaran boleh dikaji.
Sistem garis rata terlewat dan tidak dapat menangkap perubahan cepat dalam masa yang tepat. Strategi ini bergantung kepada hubungan garis rata, dan tindak balas terhadap perubahan harga mempunyai keterbelakangan dan mudah terlepas perubahan cepat.
Apabila pasaran mengalami gegaran yang besar, hubungan garis rata mungkin sering bersilang, menyebabkan pembukaan dan penutupan kedudukan yang kerap. Ini akan meningkatkan kos perdagangan dan risiko kerugian.
Terlalu bergantung pada pengoptimuman parameter, mudah terlalu sesuai. Strategi ini memperoleh alpha terutamanya melalui pengoptimuman parameter, dan bergantung kepada hasil satu set data boleh menyebabkan masalah pengoptimuman berlebihan dan terlalu sesuai.
Penyelesaian untuk menghadapi risiko adalah seperti berikut:
Parameter garis rata-rata dikurangkan dengan sewajarnya, mempercepatkan kelajuan tindak balas.
Menambah syarat penapisan untuk mengelakkan pembukaan kedudukan yang kerap di pasaran yang bergolak.
Uji data untuk pelbagai jenis dan tempoh masa untuk menilai parameter yang stabil.
Strategi ini masih boleh dioptimumkan:
Cuba kombinasi kitaran yang berbeza dan parameter rata-rata untuk mencari parameter yang lebih baik. Anda boleh mencari kombinasi parameter yang lebih baik melalui pengoptimuman usaha kecil dan kaedah pembelajaran mesin.
Menambah pengesahan indikator trend Volume dan skala besar. Ini dapat menyaring lebih jauh daripada isyarat palsu, seperti tidak membuka kedudukan apabila jumlah Volume tidak mencukupi.
Menggabungkan model pembelajaran mendalam untuk meramalkan bentuk kurva. Menggunakan model pembelajaran mendalam seperti RNN untuk meramalkan harga masa depan, membantu membuat keputusan.
Menggunakan garis rata-rata yang menyesuaikan diri, memperbaiki logik penapisan. Apabila pasaran memasuki keadaan goyah, menyesuaikan panjang garis rata-rata secara dinamik, mengurangkan frekuensi pembukaan kedudukan.
Strategi dagangan algoritma garpu mati garpu berganda adalah strategi perdagangan algoritma penapis yang lebih biasa. Strategi ini mudah dilaksanakan, sesuai untuk pelajar pemula, dan juga dapat diperluaskan dan dioptimumkan dalam pelbagai dimensi.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(shorttitle = "ALGO 3-1-2", title="ALGO 3h, 1h, 2h", overlay=true)
bool startLONGBOTandDEAL = false
bool stopLONGBOTandDEAL = false
bool openLONG = false
bool closeLONG = false
bool startSHORTBOTandDEAL = false
bool stopSHORTBOTandDEAL = false
bool openSHORT = false
bool closeSHORT = false
MA1Period = ema(close, 10)
MA2Period = ema(close, 200)
MA3Period = ema(close, 200)
MA1 = security(syminfo.tickerid, "180", MA1Period)
MA2 = security(syminfo.tickerid, "60", MA2Period)
MA3 = security(syminfo.tickerid, "120", MA3Period)
MA12Crossover = crossover(MA1, MA2)
MA12Crossunder = crossunder(MA1, MA2)
MA23Crossover = crossover(MA2, MA3)
MA23Crossunder = crossunder(MA2, MA3)
if MA23Crossover
startLONGBOTandDEAL := true //stop shortBOT and DEAL code in the TV alert as well, probably stop first w/ a delay on startlong
lblBull = label.new(bar_index, na, ' BULL Time Open LONG', color=color.blue, textcolor=color.black, style=label.style_label_up, size=size.small)
label.set_y(lblBull, MA2)
strategy.close("go Short")
strategy.entry("go Long", strategy.long, comment="go Long")
if MA23Crossunder
//not sure if i should set alert for stop and start each bot, or just put start appropriate bot and stop its opposite in the same alert.
startSHORTBOTandDEAL := true
lblBull = label.new(bar_index, na, ' BEAR Time - Open SHORT', color=color.orange, textcolor=color.black, style=label.style_label_down, size=size.small)
label.set_y(lblBull, MA2)
strategy.close("go Long")
strategy.entry("go Short", strategy.short, comment="go Short")
if MA12Crossover
if MA2 >= MA3
openLONG := true
lup1 = label.new(bar_index, na, ' OPEN LONG ', color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small, yloc=yloc.belowbar)
strategy.entry("go Long", strategy.long, comment="go Long")
if MA2 <= MA3
closeSHORT := true
lup1 = label.new(bar_index, na, ' CLOSE SHORT ', color=color.gray, textcolor=color.black, style=label.style_label_up, size=size.small, yloc=yloc.belowbar)
strategy.close("go Short")
if MA12Crossunder
if MA2 >= MA3
closeLONG := true
lun1 = label.new(bar_index, na, ' CLOSE LONG ', color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small, yloc=yloc.abovebar)
strategy.close("go Long")
if MA2 <= MA3
openSHORT := true
lun1 = label.new(bar_index, na, ' OPEN SHORT ', color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small, yloc=yloc.abovebar)
strategy.entry("go Short", strategy.short, comment="go Short")
plot(MA1, color=color.green, linewidth=2, title="MA1")
plot(MA2, color=color.yellow, linewidth=3, title="MA2")
plot(MA3, color=color.red, linewidth=4, title="MA3")
alertcondition(startLONGBOTandDEAL, title="Start LONG BOT and DEAL", message="Start Long Bot and Deal")
alertcondition(stopLONGBOTandDEAL, title="Stop LONG BOT and DEAL", message="Stop Long Bot and Deal")
alertcondition(openLONG, title="Open LONG DEAL", message="Open Long Deal")
alertcondition(closeLONG, title="Close LONG DEAL", message="Close Long Deal")
alertcondition(stopSHORTBOTandDEAL, title="Stop SHORT BOT and DEAL", message="Stop Short Bot and Deal")
alertcondition(openSHORT, title="Open SHORT DEAL", message="Open Short Deal")
alertcondition(closeSHORT, title="Close SHORT DEAL", message="Close Short Deal")