Strategi Crossover Purata Bergerak

Penulis:ChaoZhang, Tarikh: 2024-01-23 15:20:16
Tag:

img

Ringkasan

Ini adalah strategi perdagangan berdasarkan isyarat crossover purata bergerak. Ia menggunakan garis purata bergerak 45 hari sebagai penunjuk teknikal utama dan menghasilkan isyarat beli dan jual apabila harga memecahkan garis purata bergerak.

Logika Strategi

Apabila harga meningkat dan memecahkan di atas garis purata bergerak 45 hari, isyarat beli dihasilkan. Selepas memegang kedudukan selama 8 hari, isyarat jual dihasilkan. Selepas itu, jika harga meningkat dan memecahkan di atas garis purata bergerak 45 hari lagi, isyarat beli baru akan dicetuskan, dan sebagainya.

Prinsip-prinsip logik khusus adalah:

  1. Hitung garis purata bergerak 45 hari.
  2. Apabila harga penutupan pecah dari bawah ke atas garis purata bergerak, isyarat beli dihasilkan untuk pergi lama.
  3. Mengekalkan kedudukan selama 8 hari dagangan selepas memasuki pasaran.
  4. Tutup kedudukan panjang selepas 8 hari dan menghasilkan isyarat jual.
  5. Jika kemudian harga penutupan pecah dari bawah ke atas garis purata bergerak lagi, menghidupkan semula isyarat beli untuk membuka semula kedudukan panjang.

Perkara di atas merupakan logik perdagangan teras strategi ini.

Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Peraturan perdagangan adalah mudah dan jelas, mudah difahami dan dilaksanakan.
  2. Menggunakan ciri pengesanan trend purata bergerak untuk menangkap trend jangka sederhana hingga panjang dengan berkesan.
  3. Tempoh penyimpanan 8 hari adalah cukup lama untuk mengesan trend dan cukup pendek untuk mengurangkan kerugian dalam masa.
  4. Peraturan untuk memasuki semula pasaran adalah jelas, yang membantu mengehadkan kekerapan perdagangan.

Risiko

Terdapat beberapa risiko dengan strategi ini:

  1. Sifat ketinggalan purata bergerak boleh membawa kepada entri terlambat dan keluar awal.
  2. Tempoh penyimpanan tetap dan parameter MA mungkin tidak dapat disesuaikan dengan keadaan pasaran yang berubah.
  3. Frekuensi perdagangan mungkin terlalu tinggi, meningkatkan kos dan slippage.
  4. Isyarat pecah boleh menghasilkan isyarat palsu yang mengakibatkan beberapa whipsaws.

Penyelesaian:

  1. Mengoptimumkan parameter MA untuk mengurangkan lag.
  2. Tingkatkan tempoh penahan atau gunakan hentian untuk mengesan trend dengan lebih baik.
  3. Tambah penapis menggunakan penunjuk lain seperti MACD atau KDJ untuk mengesahkan isyarat.
  4. Memperbaiki peraturan masuk semula untuk mengawal frekuensi.

Kawasan Peningkatan

Kawasan utama peningkatan adalah:

  1. Mengoptimumkan parameter MA untuk mencari kombinasi terbaik, contohnya MA 15 hari, 30 hari, 60 hari.

  2. Mengoptimumkan tempoh penyimpanan untuk menentukan tempoh optimum, contohnya 5 hari, 10 hari, 15 hari.

  3. Tambah hentian untuk mengesan trend dan mengawal risiko, contohnya hentian percubaan atau hentian ATR.

  4. Tambah penapis menggunakan penunjuk lain seperti MACD, KDJ untuk mengurangkan isyarat palsu.

  5. Memperbetulkan peraturan kemasukan semula untuk mengelakkan perdagangan berlebihan, contohnya menerapkan tempoh pendinginan.

  6. Uji keberkesanan di pasaran dan instrumen yang berbeza. Parameter perlu disesuaikan untuk pasaran yang berbeza.

Ringkasan

Ringkasnya, strategi persilangan MA ini adalah sistem trend berikut yang mudah dan praktikal. Ia mengambil kesempatan daripada keupayaan penjejakan trend MA dan menggabungkan penembusan harga untuk menghasilkan isyarat perdagangan. Kelebihannya adalah mudah dilaksanakan manakala keburukan adalah whipsaws sesekali. Strategi ini boleh ditingkatkan lagi melalui pengoptimuman parameter dan menambah penunjuk lain sebagai penapis.


/*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=5
strategy("Moving Average Crossover Strategy", overlay=true)

// Calculate the 45-day moving average
ma_length = 45
ma = ta.sma(close, ma_length)

// Track position entry and entry bar
var bool in_long_position = na
var int entry_bar = na
var int exit_bar = na

// Entry condition: Close price crosses above the 45-day moving average to enter the position
if (not in_long_position and ta.crossover(close, ma) and not na(ma[1]) and close > ma and close[1] < ma[1])
    in_long_position := true
    entry_bar := bar_index

// Exit condition: Close the position after holding for 8 trading days
if (in_long_position and bar_index - entry_bar >= 8)
    in_long_position := false
    exit_bar := bar_index

// Re-entry condition: Wait for price to cross over the 45-day moving average again
if (not in_long_position and ta.crossover(close, ma) and not na(ma[1]) and close > ma and close[1] > ma[1] and (na(exit_bar) or bar_index - exit_bar >= 8))
    in_long_position := true
    entry_bar := bar_index

// Execute long entry and exit
if (in_long_position)
    strategy.entry("Long", strategy.long)

if (not in_long_position)
    strategy.close("Long")

Lebih lanjut