Strategi silang purata bergerak berganda

Penulis:ChaoZhang, Tarikh: 2023-09-21 16:40:01
Tag:

Ringkasan

Strategi ini direka berdasarkan salib emas dan salib kematian purata bergerak berganda. Ia pergi lama apabila purata bergerak jangka pendek melintasi di atas purata bergerak jangka panjang, dan menutup kedudukan apabila purata bergerak jangka pendek melintasi di bawah purata bergerak jangka panjang. Strategi ini mudah dan mudah difahami, sesuai untuk pemula untuk belajar.

Logika Strategi

Strategi ini terutamanya berdasarkan kepada penunjuk sma (dekat, 14) dan sma (dekat, 28).

Pertama, tentukan purata bergerak pendek dan panjang:

short_ma = sma(close, 14)  
long_ma = sma(close, 28)

Kemudian tentukan masuk dan keluar berdasarkan salib emas dan salib kematian:

longCondition = crossover(short_ma, long_ma)
shortCondition = crossunder(short_ma, long_ma) 

Pergi panjang apabila MA pendek melintasi di atas MA panjang:

strategy.entry("Buy", strategy.long, when = longCondition)

Posisi ditutup apabila MA pendek melintasi di bawah MA panjang:

strategy.close_all(when = shortCondition) 

Logiknya mudah dan jelas, menggunakan persilangan dua MA untuk menentukan masuk dan keluar.

Analisis Kelebihan

  • Logik yang mudah, mudah digunakan untuk pemula
  • Menggunakan persilangan MA untuk menentukan trend
  • Tempoh MA yang boleh disesuaikan untuk pengoptimuman parameter
  • Membolehkan stop loss untuk mengawal kerugian perdagangan tunggal

Analisis Risiko

  • Sensitif terhadap turun naik pasaran, boleh menghasilkan banyak perdagangan yang rugi
  • Kelagakan sifat MAs, mungkin terlepas titik pembalikan harga
  • Cenderung terperangkap berhampiran titik persimpangan MA
  • Perlu mengoptimumkan tempoh MA, tempoh yang berbeza boleh membawa kepada hasil yang berbeza
  • Tidak dapat mengurangkan kerugian dengan cepat apabila trend berubah dengan ganas

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan tempoh MA untuk mencari kombinasi terbaik

Uji tempoh MA pendek dan panjang yang berbeza, seperti (5, 10), (10, 20), (20, 60) dan lain-lain untuk mencari kombinasi yang optimum.

  1. Tambah penapis untuk mengelakkan isyarat palsu

Tambah penapis seperti jumlah dagangan, jurang harga dan lain-lain berhampiran persimpangan MA untuk mengelakkan dagangan berlebihan di pasaran yang berbeza.

  1. Menggabungkan stop loss

Tetapkan harga stop loss atau gunakan MA sebagai garis stop loss untuk mengawal kerugian perdagangan tunggal.

  1. Gabungkan dengan penunjuk lain

Tambah penunjuk tambahan seperti MACD, KDJ dll untuk meningkatkan prestasi strategi.

  1. Mengoptimumkan titik masuk

Cari titik masuk yang lebih baik berhampiran MA dan bukannya masuk tepat di persimpangan.

Ringkasan

Strategi MA berganda adalah mudah untuk digunakan oleh pemula. Tetapi ia sensitif terhadap turun naik pasaran dan mempunyai risiko kerugian. Kita boleh memperbaikinya dengan mengoptimumkan parameter, menambah penapis, menggabungkan stop loss, menggabungkan penunjuk lain dan lain-lain. Ia boleh berfungsi dengan baik dalam trend yang kuat tetapi harus digunakan dengan berhati-hati atau stop loss yang betul dalam pasaran berkisar.
[/trans]


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy("Tester", pyramiding = 50, default_qty_type = strategy.cash, default_qty_value = 20, initial_capital = 2000, commission_type = strategy.commission.percent, commission_value = 0.25)

minGainPercent = input(0.6)
gainMultiplier = minGainPercent * 0.01 + 1


longCondition = crossover(sma(close, 14), sma(close, 28))
shortCondition = crossunder(sma(close, 14), sma(close, 28))


avg_protection = input(1)
gain_protection = input(1)


strategy.entry("Buy", strategy.long, when = longCondition    and (avg_protection >= 1 ? (na(strategy.position_avg_price) ? true : close <= strategy.position_avg_price) : true))
strategy.close_all(when = shortCondition  and (gain_protection >=1 ? (close >= gainMultiplier * strategy.position_avg_price) : true))

Lebih lanjut