Strategi Crossover Rata-rata Bergerak

Penulis:ChaoZhang, Tanggal: 2023-11-23 13:38:02
Tag:

img

Gambaran umum

Strategi crossover rata-rata bergerak adalah strategi perdagangan yang didasarkan pada rata-rata bergerak. Ini menggunakan persilangan rata-rata bergerak cepat dan rata-rata bergerak lambat sebagai sinyal beli dan jual. Ketika MA cepat melintasi di atas MA lambat dari bawah, sinyal beli dihasilkan. Ketika MA cepat melintasi di bawah MA lambat dari atas, sinyal jual dihasilkan.

Logika Strategi

Strategi ini menggunakan fungsi sma untuk menghitung rata-rata bergerak sederhana dari periode tertentu sebagai MA cepat dan MA lambat.

Ketika MA cepat melintasi di atas MA lambat dari bawah, fungsi crossunder mendeteksi sinyal crossover dan menghasilkan sinyal beli.

Strategi ini mewujudkan perdagangan otomatis melalui sinyal trek dan sinyal keluar. entri panjang dipicu ketika MA cepat melintasi di atas MA lambat, dan entri pendek dipicu ketika MA cepat melintasi di bawah MA lambat.

Analisis Keuntungan

  • Rata-rata bergerak memiliki kemampuan untuk melacak tren secara efektif dan menangkap momentum harga
  • Strategi MA sederhana dan langsung, mudah dimengerti dan diterapkan
  • Parameter dapat dioptimalkan untuk beradaptasi dengan lingkungan pasar yang berbeda
  • Strategi ini mengotomatisasi perdagangan tanpa intervensi manual, mengurangi biaya perdagangan

Risiko dan Solusi

  • Osilasi harga dapat menyebabkan beberapa sinyal palsu dan frekuensi perdagangan yang tinggi. Filter tambahan dapat menghindari ini.
  • Optimasi parameter sangat penting dan dapat secara signifikan mempengaruhi kinerja.
  • Ada risiko sinyal yang hilang. Indikator lain dapat dikombinasikan untuk menyaring atau melengkapi sinyal perdagangan.
  • Stop loss dapat mengendalikan kerugian perdagangan tunggal.

Arahan Optimasi

  • Rata-rata bergerak adaptif dapat digunakan untuk menyesuaikan parameter MA secara dinamis untuk pelacakan yang lebih baik.
  • Filter tambahan, seperti volume perdagangan, dapat menghindari sinyal palsu ketika tren tidak jelas.
  • Menggabungkan indikator lain seperti Bollinger Bands sebagai filter atau kondisi tambahan dapat meningkatkan kinerja strategi.
  • Strategi stop loss mengendalikan kerugian perdagangan tunggal dalam tingkat yang dapat diterima.

Kesimpulan

Strategi MA crossover adalah strategi klasik dan sederhana yang mengikuti tren. Strategi ini terutama menggunakan MA crossover sebagai sinyal perdagangan dengan logika dan implementasi yang mudah. Strategi ini dapat disesuaikan melalui penyesuaian parameter. Namun, strategi ini juga memiliki kelemahan seperti kerentanan terhadap osilasi dan pembalikan tren, frekuensi sinyal yang tinggi, dll. Ini dapat ditingkatkan melalui filter, parameter dinamis, stop loss, dll. Strategi ini memiliki ruang dan arah optimasi yang luas, dan merupakan salah satu strategi perdagangan kuantitatif mendasar.


/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-17 04:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "MA Close Strategy", shorttitle = "MA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

MASource   = input(defval = open, title = "MA Source")
MaLength   = input(defval = 18, title = "MA Period", minval = 1)

StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(true,"UseStopLoss")
stopLoss = input(50, title = "Stop loss percentage(0.1%)") 

window() => time >=  timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false

MA = sma(MASource,MaLength)

plot(MA, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)

long = crossunder(MA, close)
short = crossover(MA, close)

if (long)
    strategy.entry("LongId", strategy.long, when = long)
    strategy.exit("ExitLong", from_entry = "LongId", when = short)

if (short)
    strategy.entry("ShortId", strategy.short, when = short)
    strategy.exit("ExitShort", from_entry = "ShortId", when = long)

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)


Lebih banyak