Strategi dagangan berdasarkan purata pergerakan berganda


Tarikh penciptaan: 2024-01-19 14:10:38 Akhirnya diubah suai: 2024-01-19 14:10:38
Salin: 0 Bilangan klik: 574
1
fokus pada
1617
Pengikut

Strategi dagangan berdasarkan purata pergerakan berganda

Gambaran keseluruhan

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

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.

Analisis kelebihan

Berbanding dengan strategi lain, strategi purata bergerak berganda mempunyai kelebihan berikut:

  1. Operasi mudah, mudah difahami, sesuai untuk pemula dalam perdagangan kuantitatif
  2. Sebab-sebab utama untuk mengelakkan trend harga dalam pasaran yang rumit
  3. Parameter boleh disesuaikan dengan keadaan pasaran yang berbeza dengan menyesuaikan kitaran purata bergerak
  4. Capture: Titik perubahan dalam trend jangka pendek dan panjang
  5. Frekuensi dagangan yang boleh disesuaikan, mengurangkan kos dagangan dan kehilangan slip

Analisis risiko

Strategi purata bergerak berganda juga mempunyai beberapa risiko, terutamanya:

  1. Mungkin menghasilkan isyarat palsu, rata-rata bergerak pada dasarnya isyarat ketinggalan
  2. Dua purata bergerak yang lebih panjang dan lebih pendek memerlukan perhatian yang sama, penyesuaian parameter dan ujian kesan lebih rumit
  3. Tidak dapat menangani situasi harga yang bergelombang dengan baik, mudah terjejas
  4. Frekuensi dagangan mungkin terlalu tinggi atau terlalu rendah dan perlu dioptimumkan
  5. Kesan sangat berkaitan dengan keadaan pasaran, kurang berkesan dalam tempoh kemerosotan keseluruhan indeks

Penyelesaian:

  1. Gabungan dengan petunjuk lain untuk menapis isyarat
  2. Mengoptimumkan parameter purata bergerak, menguji kesannya
  3. Menetapkan Had Hentian yang Sesuai
  4. Menyesuaikan parameter purata bergerak untuk mengoptimumkan frekuensi dagangan
  5. Parameter penyesuaian mengikut keadaan pasaran yang berbeza

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa arah:

  1. Gabungan dengan isyarat penapis indikator lain, seperti MACD, KDJ, dan lain-lain, untuk mengelakkan isyarat palsu

  2. Memperkenalkan purata bergerak yang beradaptasi, menyesuaikan parameter purata bergerak secara dinamik mengikut tahap turun naik pasaran, meningkatkan kestabilan

  3. Mengoptimumkan parameter purata bergerak, mencari kombinasi parameter yang optimum, dan meningkatkan kesan strategi

  4. Menyertai mekanisme penangguhan kerugian untuk mengelakkan peningkatan kerugian dan meningkatkan keupayaan kawalan risiko

  5. Kombinasi pelbagai bingkai masa, menggunakan isyarat garis matahari dan garis pusingan untuk meningkatkan kestabilan

  6. Markov State Switching, menggunakan parameter yang berbeza untuk keadaan pasaran yang berbeza, meningkatkan kebolehsuaian

ringkaskan

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.

Kod sumber strategi
//@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())