Strategi penembusan purata bergerak berganda adalah trend yang biasa mengikuti strategi perdagangan kuantitatif. Ia menghasilkan isyarat perdagangan dengan mengira purata bergerak mudah dari tempoh yang berbeza dan memeriksa sama ada harga menembusi mereka untuk menentukan kedudukan. Strategi ini menggunakan purata bergerak 20 hari dan 60 hari sebagai isyarat perdagangan.
Logik teras strategi PEM berganda adalah untukmenggunakan purata bergerak dari tempoh yang berbeza untuk menangkap trend harga dan menjana isyarat perdagangan apabila harga memecahkan purata bergerak.
Secara khusus, strategi ini menggunakan purata bergerak mudah 20 hari dan 60 hari. Kedua-dua purata bergerak ini boleh dilihat sebagai alat untuk menangkap trend jangka pendek dan jangka menengah dan jangka panjang masing-masing. Apabila harga jangka pendek menembusi harga jangka menengah dan panjang, ia menandakan bahawa pasaran berada dalam trend menaik dan dengan itu harus pergi panjang. Apabila harga jangka pendek jatuh di bawah harga jangka menengah dan panjang, ia menandakan bahawa pasaran berada dalam trend menurun dan dengan itu kedudukan harus dikurangkan.
Kod ini menggunakanta.crossover
danta.crossunder
untuk menentukan sama ada harga telah memecahkan atau jatuh di bawah purata bergerak. isyarat perdagangan untuk pergi panjang atau mengurangkan kedudukan dikeluarkan dengan sewajarnya apabila pecah berlaku.
Strategi pecah purata bergerak berganda mempunyai kelebihan berikut:
Terdapat juga beberapa risiko dengan strategi:
Strategi ini boleh ditingkatkan dari dimensi berikut:
Strategi penembusan purata bergerak berganda adalah strategi trend berikut yang mudah dan praktikal. Ia dapat menangkap dengan berkesan trend jangka menengah dan panjang sambil mengelakkan bunyi pasaran jangka pendek. Juga, logik yang mudah difahami dan parameter terhad menjadikannya sangat sesuai untuk perdagangan kuantitatif. Sudah tentu terdapat ruang untuk penambahbaikan, seperti penyesuaian parameter, penapisan isyarat dan stop loss untuk menjadikannya lebih stabil dan menguntungkan.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Astorhsu //@version=5 strategy("Astor SMA20/60", overlay=true) backtest_year = input(2018, title='backtest_year') //回測開始年分 backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份 backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31) //回測開始日期 start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00) //回測開始的時間函數 //Indicators sma10 = ta.sma(close,10) sma20 = ta.sma(close,20) sma60 = ta.sma(close,60) plot(sma20, color=color.green, title="sma(20)") plot(sma60, color=color.red, title="sma(60)") //進場條件 // trend1 = sma60 > sma20 //假設目前趨勢為60>20 longCondition = ta.crossover(close, ta.sma(close, 20)) if (longCondition) strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多") shortCondition = ta.crossunder(close, ta.sma(close, 20)) if (shortCondition) strategy.close("open long20",comment="跌破m20平倉", qty=1) longCondition1 = ta.crossover(close, ta.sma(close, 60)) if (longCondition1) strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多") shortCondition1 = ta.crossunder(close, ta.sma(close, 60)) if (shortCondition1) strategy.close("open long60",comment="跌破m60平倉", qty=1) // longCondition2 = ta.crossover(close, ta.sma(close, 10)) // if (longCondition2) // strategy.entry("open long10", strategy.long, qty=1, comment="站上m10做多") // shortCondition2 = ta.crossunder(close, ta.sma(close, 10)) // if (shortCondition2) // strategy.close("open long10",comment="跌破m10平倉", qty=1)