Dual Moving Average Crossover adalah strategi scalping yang mudah dan berkesan yang menggunakan isyarat silang antara harga dan purata bergerak sebagai isyarat masuk dan keluar untuk menangkap pergerakan trend jangka pendek.
Strategi ini menggunakan dua purata bergerak dari tempoh yang berbeza - garis MA jangka pendek dan garis MA jangka panjang. Ia menghasilkan isyarat beli apabila MA jangka pendek melintasi di atas MA jangka panjang dari bawah. Isyarat jual dihasilkan apabila MA jangka pendek melintasi di bawah MA jangka panjang dari atas.
Strategi ini mula-mula mentakrifkan pembolehubah
Untuk menapis beberapa isyarat yang tidak sah, penapis tambahan seperti
Akhirnya, kedudukan sedia ada ditutup apabila harga melintasi garis MA ke belakang.
Risiko boleh dikurangkan dengan menggunakan tempoh MA dinamik berdasarkan turun naik, hentian atau hentian peratusan, dll.
Strategi ini boleh ditingkatkan dengan beberapa cara:
Mengoptimumkan parameter MA secara dinamik berdasarkan turun naik.
Tambah penapis tambahan seperti lonjakan kelantangan untuk meningkatkan kualiti isyarat.
Gunakan hentian terapung atau peratusan untuk mengurangkan hentian awal.
Gabungkan dengan penunjuk lain seperti MACD, RSI untuk pengesahan pelbagai keadaan.
Tambah pengurusan risiko automatik seperti saiz kedudukan dinamik untuk mengawal kerugian setiap perdagangan.
Gunakan pembelajaran mesin untuk model generasi isyarat yang lebih tepat.
Strategi crossover MA berganda adalah sistem yang berkesan untuk perdagangan jangka pendek. Parameter penyesuaian halus, pengurusan risiko dan menggabungkan dengan alat lain dapat meningkatkan keuntungan. Secara keseluruhan, ia mudah difahami dan dilaksanakan untuk scalping pergerakan intraday yang lebih kecil.
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MovingAvg Cross", overlay=true) length = input(50) confirmBars = input(2) price = close ma = sma(price, length) bcond = price > ma bcount = 0 bcount := bcond ? nz(bcount[1]) + 1 : 0 clc=close[0]>close[1] clc0=close[0]>open[0] clc1=close[1]>open[1] if clc and clc0 and clc1 and (bcount == confirmBars) strategy.entry("buy", strategy.long) scond = price < ma scount = 0 scount := scond ? nz(scount[1]) + 1 : 0 csc=close[0]<close[1] csc0=close[0]<open[0] csc1=close[1]<open[1] if csc and csc0 and csc1 and (scount == confirmBars) strategy.entry("sell", strategy.short) strategy.close("buy", when=scond) strategy.close("sell",when=bcond) plot(ma, color=color.red) //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)