
Strategi penembusan rata-rata bergerak ganda adalah strategi pengesanan trend yang lebih tipikal. Ia menangkap arah dan kekuatan trend pasaran dengan mengira rata-rata bergerak dua kitaran yang berbeza dan menyeberangnya sebagai isyarat membeli dan menjual.
Strategi ini adalah berdasarkan kepada dua purata bergerak: purata bergerak pertama mempunyai kitaran yang lebih pendek, yang dapat bertindak balas lebih cepat terhadap perubahan harga; purata bergerak kedua mempunyai kitaran yang lebih lama, yang dapat menyaring sebahagian daripada kebisingan. Apabila rata-rata bergerak jangka pendek melintasi rata-rata bergerak jangka panjang, ia dianggap sebagai isyarat membeli; apabila rata-rata bergerak jangka pendek melintasi rata-rata bergerak jangka panjang, ia dianggap sebagai isyarat menjual.
Khususnya, strategi ini mengira purata bergerak indeks 10 kitaran ((price1)) dan purata bergerak indeks 20 kitaran ((price2)). Jika harga pembukaan dan penutupan K baris semasa adalah lebih tinggi daripada dua purata bergerak, maka ia akan menghasilkan isyarat beli. Jika harga pembukaan dan penutupan K baris semasa adalah lebih rendah daripada dua purata bergerak, maka ia akan menghasilkan isyarat jual.
Dengan reka bentuk seperti itu, anda boleh memasuki pasaran lebih awal apabila trend mula terbentuk, dan mengikuti trend; apabila trend berbalik, anda juga boleh keluar dari pasaran secepat mungkin, dan mengawal risiko dengan berkesan.
Strategi ini agak mudah untuk digunakan secara keseluruhan, menangkap trend melalui prinsip persilangan dua persamaan, merupakan strategi asas untuk perdagangan kuantitatif. Tetapi strategi ini juga mempunyai risiko tertentu, dan memerlukan pengoptimuman lanjut untuk menyesuaikan diri dengan keadaan pasaran yang berbeza. Terdapat ruang untuk pengoptimuman dalam aspek penyesuaian parameter, mekanisme hentikan kerugian, penapisan isyarat, dan sebagainya, yang dapat menjadikan strategi lebih stabil dan boleh dipercayai.
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//study(title="MA River CC v1", overlay = true)
strategy("MA River CC v1", overlay=true)
src = input(close, title="Source")
price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(10, title="1st MA Length")
type1 = input("EMA", "1st MA Type", options=["SMA", "EMA"])
ma2 = input(20, title="2nd MA Length")
type2 = input("EMA", "2nd MA Type", options=["SMA", "EMA"])
price1 = if (type1 == "SMA")
sma(price, ma1)
else
ema(price, ma1)
price2 = if (type2 == "SMA")
sma(price, ma2)
else
ema(price, ma2)
//plot(series=price, style=line, title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line, title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)
buy_entry = (open>price1 and open>price2) and (close>price1 and close>price2)
sell_entry = (open<price1 and open<price2) and (close<price1 and close<price2)
buy_close = sell_entry
sell_close = buy_entry
//longCondition = crossover(price1, price2)
if(buy_entry)
strategy.entry("Long", strategy.long)
if(sell_entry)
strategy.entry("Short", strategy.short)
strategy.close("Long" , when=buy_close)
strategy.close("Short",when=sell_close)