
Strategi perdagangan purata bergerak ganda adalah strategi perdagangan kuantitatif yang biasa digunakan. Strategi ini menggunakan purata bergerak dari dua tempoh masa yang berbeza untuk menghasilkan isyarat perdagangan berdasarkan persimpangan mereka. Khususnya, 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.
Prinsip utama strategi ini adalah: purata bergerak jangka pendek dapat mencerminkan trend jangka pendek harga aset, dan purata bergerak jangka panjang dapat mencerminkan trend jangka panjang harga aset. Apabila garis pendek melintasi garis panjang, menunjukkan trend jangka pendek berubah menjadi naik, maka anda boleh membeli; apabila garis pendek melintasi garis panjang, menunjukkan trend jangka pendek berubah menjadi turun, maka anda boleh menjual.
Khususnya, strategi ini mentakrifkan dua garis purata bergerak: satu adalah purata bergerak jangka pendek 5 hari, yang digunakan untuk menangkap trend harga jangka pendek; satu lagi adalah purata bergerak jangka panjang 15 hari, yang digunakan untuk menilai trend harga jangka panjang. Apabila garis 5 hari melintasi garis 15 hari dari bawah, ini menunjukkan bahawa harga jangka pendek telah mula naik, yang merupakan isyarat membeli; dan apabila garis 5 hari melintasi garis 15 hari dari atas ke bawah, ini menunjukkan bahawa harga jangka pendek mula turun, yang merupakan isyarat menjual.
Berbanding dengan strategi lain, strategi purata bergerak berganda mempunyai kelebihan berikut:
Strategi purata bergerak berganda juga mempunyai beberapa risiko, terutamanya:
Penyelesaian:
Strategi ini boleh dioptimumkan dalam beberapa arah:
Gabungan dengan isyarat penapis indikator lain, seperti MACD, KDJ, dan lain-lain, untuk mengelakkan isyarat palsu
Memperkenalkan purata bergerak yang beradaptasi, menyesuaikan parameter purata bergerak secara dinamik mengikut tahap turun naik pasaran, meningkatkan kestabilan
Mengoptimumkan parameter purata bergerak, mencari kombinasi parameter yang optimum, dan meningkatkan kesan strategi
Menyertai mekanisme penangguhan kerugian untuk mengelakkan peningkatan kerugian dan meningkatkan keupayaan kawalan risiko
Kombinasi pelbagai bingkai masa, menggunakan isyarat garis matahari dan garis pusingan untuk meningkatkan kestabilan
Markov State Switching, menggunakan parameter yang berbeza untuk keadaan pasaran yang berbeza, meningkatkan kebolehsuaian
Strategi perdagangan rata-rata bergerak berganda adalah strategi perdagangan kuantitatif yang lebih stabil secara keseluruhan. Prinsip perdagangannya mudah, mudah difahami dan dilaksanakan, parameternya disesuaikan dengan fleksibel, dan dapat mengikuti tren pasaran dengan berkesan. Di samping itu, terdapat batasan tertentu, seperti menghasilkan isyarat palsu, sukar untuk menangani keadaan turun naik yang kuat di pasaran dan sebagainya. Ini perlu dikawal dengan memperkenalkan alat bantu lain, dan cara pengoptimuman parameter.
//@version=3
strategy("CS: 2 Moving Averages Script - Strategy (Testing)", overlay=true)
// === GENERAL INPUTS ===
// short ma
ma1Source = input(defval = close, title = "MA 1 Source")
ma1Length = input(defval = 5, title = "MA 1 Period", minval = 1)
// long ma
ma2Source = input(defval = close, title = "MA 2 Source")
ma2Length = input(defval = 15, title = "MA 2 Period", minval = 1)
// === SERIES SETUP ===
/// a couple of ma's..
ma1 = ema(ma1Source, ma1Length)
ma2 = ema(ma2Source, ma2Length)
// === PLOTTING ===
fast = plot(ma1, title = "MA 1", color = red, linewidth = 2, style = line, transp = 30)
slow = plot(ma2, title = "MA 2", color = green, linewidth = 2, style = line, transp = 30)
// === LOGIC ===
enterLong = crossover(ma1, ma2)
exitLong = crossover(ma2, ma1)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 2012)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2012)
// === FUNCTION EXAMPLE ===
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"
// Entry //
strategy.entry(id="Long Entry", long=true, when=enterLong and window())
strategy.entry(id="Short Entry", long=false, when=exitLong and window())