Melalui Strategi Pencegahan

Penulis:ChaoZhang, Tanggal: 2023-10-12 16:47:55
Tag:

Gambaran umum

Strategi crossover rata-rata bergerak adalah strategi perdagangan kuantitatif yang sangat umum. Ini menggunakan salib emas dan salib kematian rata-rata bergerak untuk menentukan tren dan keuntungan. Ketika rata-rata bergerak jangka pendek melintasi di atas rata-rata bergerak jangka panjang, itu menandakan tren naik, dan posisi panjang dapat diambil. Ketika rata-rata bergerak jangka pendek melintasi di bawah rata-rata bergerak jangka panjang, itu menandakan tren menurun, dan posisi pendek dapat diambil.

Logika Strategi

Strategi ini didasarkan pada golden cross dan death cross dari moving average untuk menentukan titik masuk dan keluar.upOrDowndanlongOrShortuntuk menentukan panjang atau pendek;percentInputuntuk menetapkan persentase ambang perubahan harga;closePositionDaysuntuk mengatur jumlah hari untuk memegang posisi.

Logika inti adalah: menghitung kenaikan/penurunan hari ini relatif terhadap kemarin. Jika mencapai persentase ambang masuk, sinyal perdagangan dipicu. Jika itu adalah sinyal panjang, ketika harga hari ini meningkat lebih dari ambang relatif terhadap kemarin, pergi panjang. Jika itu adalah sinyal pendek, ketika harga hari ini menurun lebih dari ambang relatif terhadap kemarin, pergi pendek.

Setelah pergi panjang/pendek, hari masuk dan 4 hari berikutnya akan ditandai dengan warna pada grafik. Posisi akan ditutup secara otomatis setelah 4 hari.

Keuntungan

  • Menggunakan crossover rata-rata bergerak untuk menentukan tren adalah metode yang matang dan andal
  • Logika strategi yang sederhana dan jelas, mudah dimengerti dan diterapkan
  • Frekuensi dapat dikendalikan dengan menyesuaikan parameter
  • Mekanisme stop loss otomatis secara efektif mengendalikan risiko

Risiko

  • Rata-rata bergerak memiliki efek keterlambatan, mungkin kehilangan waktu terbaik dari perubahan harga yang cepat
  • Perubahan harga yang signifikan dapat terjadi dalam jangka pendek, menghasilkan sinyal yang tidak perlu
  • Pengaturan parameter yang tidak tepat dapat mempengaruhi kinerja strategi
  • Tidak mampu menanggapi secara efektif dampak dari peristiwa tak terduga

Manajemen risiko:

  1. Mengoptimalkan parameter rata-rata bergerak, periode yang lebih lama membantu menyaring kebisingan
  2. Meningkatkan persentase ambang untuk mengurangi perdagangan yang tidak perlu
  3. Uji periode penyimpanan yang berbeda untuk mengendalikan kerugian tunggal
  4. Gabungkan dengan indikator lain untuk mengkonfirmasi sinyal lebih lanjut

Arahan Optimasi

  • Pertimbangkan untuk menggunakan EMA, DMA bukan SMA untuk membuatnya lebih sensitif
  • Tambahkan mekanisme stop loss, misalnya stop loss saat memecahkan rata-rata
  • Tambahkan indikator teknis lainnya seperti MACD, KDJ untuk kombinasi, meningkatkan tingkat kemenangan
  • Coba metode pembelajaran mesin untuk mengoptimalkan parameter otomatis
  • Mengoptimalkan waktu masuk dan keluar, seperti keluar, dll.

Ringkasan

Strategi crossover rata-rata bergerak adalah strategi perdagangan kuantitatif yang sangat sederhana dan praktis. Dengan menilai hubungan antara tren jangka pendek dan jangka panjang, ia mendapat keuntungan dari sifat tren harga aset. Strategi ini mudah dilaksanakan dengan logika yang jelas, dan membentuk dasar dari banyak strategi perdagangan kuantitatif. Kita dapat memperoleh kinerja yang lebih baik melalui penyesuaian parameter dan optimasi. Tapi kita juga perlu mengelola risiko dan menghindari penyalahgunaan.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//  Created by Leon Ross

strategy(title = "DaysAfterCertainPercentChangev1", shorttitle = "DACPCv1", overlay = true, 
  pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, 
  calc_on_every_tick=true, initial_capital=100000)
  
//Inputs
longOrShort = input(title="Long=Checked Short=Unchecked", type=bool, defval=true) //long=true, down=false
upOrDown = input(title="Direction of Today vs. Previous day: Up=Checked Down=Unchecked", type=bool, defval=true) //up=true, down=false: this is the direction of days vs previous day
percentInput = input(title="Percent", type=float, defval=4.5)
closePositionDays = input(title="How Many Days to Close Position", defval=4)

//Conditions
//percentUpValue = (close / close[1]) - 1
//percentUp = percentUpValue >= (percentInput/100.0)
//upConditions = percentUp
//percentDownValue = 1- (close / close[1])
//percentDown = percentDownValue >= (percentInput/100.0)
//downConditions = percentDown
upValue = (close / close[1]) - 1
downValue = 1 - (close / close[1])
allConditions = if(upOrDown)
    upValue >= (percentInput/100.0)
else
    downValue >= (percentInput/100.0)
    
//Plots
bgcolor(allConditions ? (upOrDown ? green : red) : na, transp=70)
bgcolor(allConditions ? silver : na, transp=70, offset=1)
bgcolor(allConditions ? silver : na, transp=70, offset=2)
bgcolor(allConditions ? silver : na, transp=70, offset=3)
bgcolor(allConditions ? silver : na, transp=70, offset=4)
//bgcolor(downConditions == 1 ? red : na, transp=70)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=1)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=2)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=3)
//bgcolor(downConditions == 1 ? silver : na, transp=70, offset=4)

//Entires
if(longOrShort)
    strategy.entry(id = "Long", long = true, when = allConditions) 
else
    strategy.entry(id = "Short", long = false, when = allConditions)

//Exits
if (barssince(allConditions) == closePositionDays)
    if(longOrShort)
        strategy.close("Long")
    else
        strategy.close("Short")




Lebih banyak