Sumber daya yang dimuat... Pemuatan...

Strategi Crossover Rata-rata Bergerak Ganda

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

Gambaran umum

Strategi ini dirancang berdasarkan salib emas dan salib kematian dari rata-rata bergerak ganda. Ini pergi panjang ketika rata-rata bergerak jangka pendek melintasi di atas rata-rata bergerak jangka panjang, dan menutup posisi ketika rata-rata bergerak jangka pendek melintasi di bawah rata-rata bergerak jangka panjang. Strategi ini sederhana dan mudah dipahami, cocok untuk pemula untuk belajar.

Logika Strategi

Strategi ini terutama didasarkan pada indikator sma (dekat, 14) dan sma (dekat, 28).

Pertama, tentukan rata-rata bergerak pendek dan panjang:

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

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

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

Pergi panjang ketika MA pendek melintasi atas MA panjang:

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

Posisi tutup ketika MA pendek melintasi di bawah MA panjang:

strategy.close_all(when = shortCondition) 

Logika yang sederhana dan jelas, memanfaatkan persilangan dua MA untuk menentukan masuk dan keluar.

Analisis Keuntungan

  • Logika sederhana, mudah digunakan untuk pemula
  • Menggunakan MA crossover untuk menentukan tren
  • Periode MA yang dapat disesuaikan untuk optimasi parameter
  • Memungkinkan stop loss untuk mengendalikan kerugian perdagangan tunggal

Analisis Risiko

  • Sensitif terhadap fluktuasi pasar, dapat menghasilkan banyak perdagangan yang rugi
  • Sifat keterlambatan MAs, mungkin kehilangan titik pembalikan harga
  • Kemungkinan terjebak di dekat titik persimpangan MA
  • Perlu mengoptimalkan periode MA, periode yang berbeda dapat menyebabkan hasil yang berbeda
  • Tidak dapat dengan cepat memotong kerugian ketika tren berubah dengan keras

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Optimalkan periode MA untuk menemukan kombinasi terbaik

Uji periode MA pendek dan panjang yang berbeda, seperti (5, 10), (10, 20), (20, 60) dll untuk menemukan kombinasi yang optimal.

  1. Tambahkan filter untuk menghindari sinyal palsu

Tambahkan filter seperti volume perdagangan, kesenjangan harga, dll. di dekat penyeberangan MA untuk menghindari perdagangan yang berlebihan di berbagai pasar.

  1. Menggabungkan stop loss

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

  1. Gabungkan dengan indikator lain

Tambahkan indikator tambahan seperti MACD, KDJ dll untuk meningkatkan kinerja strategi.

  1. Optimalkan titik masuk

Temukan titik masuk yang lebih baik di dekat MAs daripada masuk langsung di persimpangan.

Ringkasan

Strategi dual MA sederhana untuk pemula untuk digunakan. Tapi sensitif terhadap fluktuasi pasar dan memiliki risiko kerugian. Kita dapat memperbaikinya dengan mengoptimalkan parameter, menambahkan filter, menggabungkan stop loss, menggabungkan indikator lain, dll. Ini dapat berkinerja baik dalam tren yang kuat tetapi harus digunakan dengan hati-hati atau stop loss yang tepat di pasar 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 banyak