Strategi Crossover Purata Bergerak

Penulis:ChaoZhang, Tarikh: 2023-12-08 15:23:33
Tag:

img

Strategi ini menggunakan persilangan purata bergerak 20 hari dan purata bergerak 60 hari untuk menjana isyarat perdagangan. Ia pergi lama apabila harga melanggar di atas MA 20 hari dan menutup kedudukan apabila harga melanggar di bawah MA 20 hari. Begitu juga, ia membentuk isyarat perdagangan apabila harga melintasi MA 60 hari. Strategi ini tergolong dalam sistem trend berikut biasa.

Logika Strategi

  1. Mengira purata bergerak mudah 20 hari dan purata bergerak mudah 60 hari
  2. Pergi panjang apabila harga penutupan melebihi MA 20 hari
  3. Posisi ditutup apabila harga penutupan pecah di bawah MA 20 hari
  4. Pergi panjang apabila harga penutupan melebihi MA 60 hari
  5. Posisi ditutup apabila harga penutupan pecah di bawah MA 60 hari

Peraturan di atas menentukan isyarat perdagangan dan logik untuk strategi ini. Apabila harga melintasi garis MA, ia menunjukkan trend baru muncul dan kita boleh mengikuti trend untuk pergi lama. Apabila harga jatuh di bawah garis MA, ia menunjukkan trend berakhir jadi kita menutup kedudukan.

Kelebihan

  1. Mengambil MA berganda menjadikan strategi lebih stabil. MA 20 hari menangkap peluang jangka pendek dengan lebih cepat manakala MA 60 hari menapis beberapa bunyi pasaran dan kunci dalam trend jangka menengah dan panjang.
  2. Ujian semula bermula dari tahun 2018 dan memilih pasaran saham Taiwan, yang mempunyai sistem perdagangan yang lebih maju berbanding pasaran saham A China, yang lebih mencerminkan keberkesanan strategi.
  3. Ia menetapkan stop loss yang betul dan saiz kedudukan, mengawal risiko sebanyak mungkin.

Risiko

  1. Strategi ini hanya bergantung kepada penunjuk MA. Ia boleh menghasilkan lebih banyak whipsaws apabila tidak ada trend yang jelas di pasaran.
  2. Strategi ini tidak mengoptimumkan saiz dan kedudukan beli / jual, gagal memaksimumkan penggunaan modal.
  3. Strategi ini bertindak balas secara simetri terhadap kenaikan dan penurunan harga, tidak dapat menyesuaikan diri dengan keadaan pasaran yang berbeza.

Penyelesaian Risiko:

  1. Tambah penunjuk lain seperti KDJ, MACD untuk membentuk pengesahan berganda, mengelakkan perdagangan yang salah.
  2. Mengoptimumkan saiz kedudukan dan kecekapan penggunaan modal mengikut cap pasaran, turun naik dan lain-lain.
  3. Mengambil langkah-langkah asimetris berdasarkan peringkat pasaran, mengurangkan perdagangan semasa pasaran terhad julat dan meningkatkan saiz kedudukan semasa trend yang jelas.

Arahan pengoptimuman

  1. Mengoptimumkan kuantiti beli / jual. Sesuaikan saiz kedudukan secara dinamik berdasarkan stop loss.
  2. Mengoptimumkan parameter MA. Cari parameter yang lebih baik melalui pengoptimuman berjalan ke hadapan dan pengoptimuman rawak.
  3. Tambah strategi stop loss. Memindahkan perintah stop loss atau stop limit lebih melindungi keuntungan.
  4. Tambah pengurusan saiz kedudukan. Sesuaikan saiz kedudukan setiap perdagangan secara dinamik berdasarkan saiz modal, cap pasaran dan lain-lain.

Ringkasan

Ini adalah strategi crossover purata bergerak berganda yang tipikal. Idea utama adalah untuk mengikuti trend dengan menubuhkan kedudukan apabila harga melintasi garis MA. Strategi ini mudah dan praktikal untuk dilaksanakan. Sementara itu, terdapat ruang untuk pengoptimuman lanjut, dengan penyesuaian parameter, stop loss, saiz kedudukan dll untuk mencapai hasil yang lebih baik.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
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 TW", overlay=true, margin_long=100, margin_short=100)
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
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)")

//進場條件
longCondition = ta.crossover(close, ta.sma(close, 20))
if (longCondition) and time >= start_time
    strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多")


shortCondition = ta.crossunder(close, ta.sma(close, 20))
if (shortCondition) and time >= start_time
    strategy.close("open long20",comment="跌破m20平倉", qty=1)     
    
longCondition1 = ta.crossover(close, ta.sma(close, 60))
if (longCondition1) and time >= start_time
    strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多")


shortCondition1 = ta.crossunder(close, ta.sma(close, 60))
if (shortCondition1) and time >= start_time
    strategy.close("open long60",comment="跌破m60平倉", qty=1)     

Lebih lanjut