Strategi kuantitatif purata bergerak berganda adalah strategi perdagangan kuantitatif berasaskan penunjuk teknikal. Ia menentukan trend pasaran dengan mengira dua purata bergerak dari tempoh yang berbeza dan membolehkan perdagangan berisiko rendah. Apabila purata bergerak jangka pendek melintasi di atas purata bergerak jangka panjang, isyarat salib emas dihasilkan untuk pergi panjang. Apabila purata bergerak yang lebih pendek melintasi di bawah yang lebih panjang, isyarat salib kematian dihasilkan untuk pergi pendek. Strategi ini juga menggabungkan penunjuk saluran harga untuk mengelakkan pecah palsu.
Strategi kuantitatif purata bergerak emas berpusat pada teori purata bergerak. purata bergerak dapat menapis bunyi pasaran dengan berkesan dan menunjukkan arah trend jangka panjang. Apabila purata bergerak jangka pendek melintasi di atas purata bergerak jangka panjang, ia menunjukkan pembalikan ke atas pasaran dan merupakan isyarat beli. Apabila purata bergerak yang lebih pendek melintasi di bawah yang lebih lama, ia menunjukkan pembalikan ke bawah dan adalah isyarat jual. Strategi ini menetapkan dua kumpulan purata bergerak - yang pertama adalah purata bergerak 2 hari dan 3 hari, dan yang kedua adalah purata bergerak 420 hari. Isyarat pembelian 2 hari dihasilkan apabila purata bergerak 3 hari melintasi di atas, dan isyarat jual dihasilkan apabila ia melintasi di bawah. Purata bergerak 420 hari digunakan untuk menentukan trend perdagangan jangka panjang untuk mengelakkan penurunan jangka pendek.
Logik utama kod strategi adalah:
Prinsip-prinsip khusus ialah:
Ia menangkap peluang pembalikan trend selepas penyesuaian jangka pendek dengan menentukan titik perubahan dengan persimpangan purata bergerak berganda dan menetapkan penapis parameter untuk mengelakkan perdagangan yang salah. Strategi ini dapat menangkap peluang pembalikan trend dengan berkesan selepas penyesuaian jangka pendek dengan faktor keuntungan yang agak tinggi.
Strategi Kuantitatif Golden Cross Dual Moving Average mempunyai kelebihan berikut:
Strategi Kuantitatif Golden Cross Dual Moving Average juga mempunyai risiko berikut:
Kaedah berikut boleh digunakan untuk mengurangkan risiko:
Strategi Kuantitatif Rata-rata Bergerak Ganda Golden Cross juga boleh dioptimumkan dalam aspek berikut:
Pengoptimuman Parameter: Sesuaikan parameter purata bergerak dan indikator saluran untuk memilih kombinasi parameter optimum. Algoritma genetik boleh membantu pengoptimuman.
Pilihan masa: Pilih parameter purata bergerak yang paling sesuai berdasarkan ciri produk yang berbeza.
Pengoptimuman strategi stop loss: Tetapkan hentian dinamik, hentian belakang dan lain-lain untuk mengelakkan hentian mundur.
Pengoptimuman perdagangan arah: Memasukkan penunjuk trend dan menggunakan operasi trend-mengikut untuk mengelakkan perdagangan kontra-trend.
Gabungan pembelajaran mesin: Gunakan LSTM, RNN dan model pembelajaran mendalam yang lain untuk membantu menilai kualiti isyarat dan menentukan masa kemasukan.
Strategi kuantitatif purata bergerak berganda menentukan trend harga jangka pendek melalui prinsip crossover purata bergerak yang mudah. Penentuan penunjuk saluran berkesan menapis isyarat palsu. Strategi ini mempunyai logik yang mudah dan mudah dilaksanakan. Penyesuaian parameter yang fleksibel mungkin dengan prestasi yang agak baik yang disahkan dalam perdagangan langsung.
/*backtest start: 2023-12-24 00:00:00 end: 2023-12-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Indicator420 by SeaSide420 strategy("Indicator420 strategy", overlay=true) q=input(title="HullMA",defval=420) z=input(title="HullMA cross",defval=3) a=input(title="VWMA",defval=14) rvwma=vwma(close,round(a)) rvwma2=vwma(close,round(a*2)) rvwma3=vwma(close,round(a*3)) n2ma=2*wma(close,round(z/2)) nma=wma(close,z) diff=n2ma-nma sqn=round(sqrt(z)) n2ma1=2*wma(close[1],round(z/2)) nma1=wma(close[1],z) diff1=n2ma1-nma1 sqn1=round(sqrt(z)) n2ma2=2*wma(close[2],round(q/2)) nma2=wma(close[2],q) diff2=n2ma2-nma2 sqn2=round(sqrt(q)) n1=wma(diff,sqn) n2=wma(diff1,sqn) n3=wma(diff2,sqn) b=n1>n2?red:lime c=n1>n2?green:red d=n3>rvwma3?red:green e=rvwma2>rvwma3?green:red f=n1>n2?red:green //plot(rvwma3, color=e, linewidth=1) plot(cross(rvwma, rvwma2) ? rvwma : na, style = line,color=e, linewidth = 1) plot(cross(n1, n2) ? n1 : na, style = line,color=b, linewidth = 3) plot(cross(n1, n2) ? n1 : na, style = circles,color=c, linewidth = 4) closelong = n1<n2 if (closelong) strategy.close("Long") closeshort = n1>n2 if (closeshort) strategy.close("Short") longCondition = n1>n2 and strategy.opentrades<1 and n1<rvwma3 if (longCondition) strategy.entry("Long",strategy.long) shortCondition = n1<n2 and strategy.opentrades<1 and n1>rvwma3 if (shortCondition) strategy.entry("Short",strategy.short)