Strategi ini adalah strategi momentum berdasarkan garis purata bergerak. Ia menghasilkan isyarat perdagangan dengan mengira purata bergerak mudah dari tempoh yang berbeza dan membandingkan situasi silang mereka. Khususnya, apabila garis purata bergerak jangka pendek melintasi di atas garis purata bergerak jangka panjang, isyarat beli dihasilkan; apabila garis purata bergerak jangka pendek melintasi di bawah garis purata bergerak jangka panjang, isyarat jual dihasilkan.
Logik teras strategi ini adalah berdasarkan kesan momentum, iaitu kelangsungan trend harga saham. Garis purata bergerak dapat mencerminkan trend perubahan harga saham dengan berkesan. Apabila garis purata bergerak jangka pendek melintasi di atas garis purata bergerak jangka panjang, ia bermakna harga saham mula memasuki trend menaik; sebaliknya, apabila garis purata bergerak jangka pendek melintasi di bawah garis purata bergerak jangka panjang, ia bermakna harga saham mula memasuki trend menurun. Strategi ini menghasilkan isyarat perdagangan berdasarkan prinsip ini.
Secara khusus, purata bergerak mudah 13 hari dan purata bergerak mudah 34 hari ditakrifkan dalam strategi. Selepas mengira kedua-dua purata bergerak ini berdasarkan harga penutupan harian, hubungan magnitud mereka dibandingkan. Jika garis 13 hari melintasi di atas garis 34 hari, isyarat beli dihasilkan, yang menunjukkan bahawa harga saham memasuki trend menaik dan kedudukan panjang harus ditubuhkan; jika garis 13 hari melintasi di bawah garis 34 hari, isyarat jual dihasilkan, yang menunjukkan bahawa harga saham memasuki trend menurun dan kedudukan harus ditutup.
Kelebihan terbesar strategi ini adalah bahawa ia mudah dan mudah difahami dan dilaksanakan. Garis purata bergerak adalah salah satu penunjuk teknikal yang paling asas dan biasa digunakan. Prinsipnya mudah dan mudah difahami dan digunakan. Pada masa yang sama, isyarat persilangan garis purata bergerak juga telah terbukti berkesan melalui amalan jangka panjang.
Di samping itu, tetapan parameter strategi ini fleksibel dan boleh diselaraskan mengikut pelbagai jenis dan keadaan pasaran. Sebagai contoh, parameter kitaran garis purata bergerak boleh diubah untuk menyesuaikan kepekaan strategi. Ini memberikan ruang untuk pengoptimuman dan penyesuaian strategi.
Risiko terbesar strategi ini adalah bahawa mungkin terdapat lebih banyak isyarat palsu dan terperangkap dalam pasaran yang terikat julat. Apabila harga turun naik dengan tajam, garis purata bergerak boleh menghasilkan persilangan yang kerap, yang mengakibatkan isyarat palsu. Pada ketika ini, anda perlu menyesuaikan parameter kitaran garis purata bergerak untuk menapis beberapa bunyi bising.
Di samping itu, apabila terdapat pembalikan pasaran yang lebih besar, titik stop loss strategi boleh dilanggar, mengakibatkan kerugian yang lebih besar.
Aspek berikut strategi ini boleh dioptimumkan:
Mengoptimumkan parameter kitaran garis purata bergerak untuk mencari kombinasi parameter yang optimum untuk pelbagai jenis dan keadaan pasaran.
Tambah penapisan penunjuk teknikal lain seperti MACD dan KD untuk mengelakkan penjanaan isyarat palsu di pasaran yang terikat julat.
Mengoptimumkan dan menyesuaikan secara dinamik strategi stop loss untuk mengelakkan titik stop loss terlalu dekat sambil memastikan stop loss, dengan kebarangkalian yang lebih tinggi untuk ditembusi.
Meningkatkan mekanisme pengurusan kedudukan seperti pelaburan tetap dan nisbah kedudukan untuk mengawal risiko transaksi tunggal.
Strategi ini adalah strategi crossover purata bergerak yang sangat klasik. Ia menjana isyarat beli dan jual dengan mengira dan membandingkan hubungan antara purata bergerak jangka pendek dan jangka panjang. Kelebihan strategi ini adalah parameter yang mudah, fleksibel, dan sesuai untuk pemula belajar; kelemahan adalah bahawa isyarat mungkin tidak cukup stabil dan mudah terjebak dalam pasaran terhad. Dengan pengoptimuman yang betul, ia masih boleh menjadi strategi kuantitatif yang sangat praktikal.
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // TODO: update strategy name strategy("{STRATEGY NAME}", overlay=true) // === TA LOGIC === // // // TODO: PUT YOUR TA LOGIC HERE LONG_SIGNAL_BOOLEAN = crossover(sma(close, 13), sma(close, 34)) SHORT_SIGNAL_BOOLEAN = crossunder(sma(close, 12), sma(close, 21)) // === INPUT BACKTEST DATE RANGE === enableShorts = input(false, title="Enable short entries?") FromMonth = input(defval = 5, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2017) ToMonth = input(defval = 9, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2018, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" // === STRATEGY BUY / SELL ENTRIES === // TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal // long and short entries buy() => window() and LONG_SIGNAL_BOOLEAN sell() => window() and SHORT_SIGNAL_BOOLEAN if buy() strategy.entry("Long", strategy.long, comment="Long") if sell() if (enableShorts) strategy.entry("Short", strategy.short, comment="Short") else strategy.close("Long") // === BACKTESTING: EXIT strategy === sl_inp = input(10, title='Stop Loss %', type=float)/100 tp_inp = input(30, title='Take Profit %', type=float)/100 stop_level = strategy.position_avg_price * (1 - sl_inp) take_level = strategy.position_avg_price * (1 + tp_inp) strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)