Strategi terobosan crossover


Tanggal Pembuatan: 2023-10-12 16:47:55 Akhirnya memodifikasi: 2023-10-12 16:47:55
menyalin: 0 Jumlah klik: 584
1
fokus pada
1617
Pengikut

Ringkasan

Strategi moving averages crossover adalah strategi perdagangan kuantitatif yang sangat umum. Strategi ini menggunakan moving averages untuk menilai tren untuk mendapatkan keuntungan. Ketika bergerak di atas rata-rata jangka pendek, menunjukkan bahwa harga saham mulai naik, Anda dapat melakukan lebih banyak; ketika bergerak di bawah rata-rata jangka pendek, menunjukkan bahwa harga saham mulai turun, Anda dapat melakukan kosong.

Prinsip Strategi

Strategi ini didasarkan pada pergerakan garis rata-rata untuk menentukan waktu pembelian dan penjualan.upOrDownDanlongOrShortDua Boolean input parameter untuk menilai over-commitment; menggunakanpercentInputMasukkan parameter untuk menetapkan persentase penurunan dari perubahan harga saham; gunakanclosePositionDaysMasukkan parameter untuk mengatur jumlah hari yang akan dipegang posisi.

Logika inti dari strategi ini adalah: perhitungan kenaikan dan penurunan hari ini terhadap hari kemarin, jika mencapai persentase penurunan nilai masukan, maka sinyal perdagangan akan dikirim. Jika bullish, maka lakukan lebih banyak ketika hari ini relatif naik dari penurunan nilai kemarin; jika bearish, maka lakukan kosong ketika hari ini relatif turun dari penurunan nilai kemarin.

Setelah melakukan lebih banyak shorting, akan ditandai pada gambar dengan warna yang berbeda pada hari itu dan 4 hari setelahnya.

Keunggulan Strategis

  • Menggunakan moving average forks adalah cara yang terbukti dan dapat diandalkan untuk menilai tren pasar
  • Strategi logis sederhana dan jelas, mudah dipahami dan diterapkan
  • Frekuensi kebijakan dapat dikontrol dengan menyesuaikan parameter
  • Mekanisme stop loss otomatis dapat mengontrol risiko secara efektif

Risiko Strategis

  • Moving Average memiliki keterlambatan dan mungkin melewatkan saat harga berubah dengan cepat
  • Harga saham dapat mengalami perubahan besar dalam waktu dekat, menyebabkan sinyal silang yang tidak perlu.
  • ParameterSet parameter yang salah juga dapat mempengaruhi efek kebijakan
  • Tidak mampu menanggapi dampak dari kejadian yang tidak terduga

Tindakan pengendalian risiko:

  1. Optimalkan parameter rata-rata bergerak, siklus perpanjangan yang tepat membantu memfilter kebisingan
  2. Meningkatkan persentase penurunan harga saham, mengurangi transaksi yang tidak perlu
  3. Uji Coba Berbagai Hari Berposisi, Kontrol Kerugian Tunggal
  4. Sinyal tren dikonfirmasi lebih lanjut dalam kombinasi dengan indikator lainnya

Arah optimasi strategi

  • Moving Average dapat dipertimbangkan untuk diubah menjadi Moving Average dari indeks seperti EMA, DMA, dan lain-lain, sehingga lebih sensitif terhadap perubahan harga
  • Menambahkan mekanisme stop loss, seperti stop loss langsung saat break-out
  • Menambahkan indikator teknis lainnya ke dalam kombinasi, seperti MACD, KDJ, dan lain-lain, untuk meningkatkan peluang strategi
  • Metode pembelajaran mesin dapat mencoba mengoptimalkan parameter secara otomatis
  • Optimalkan waktu masuk dan keluar, seperti breakout entrada

Meringkaskan

Strategi moving average crossover adalah strategi perdagangan kuantitatif yang sangat sederhana dan praktis. Strategi ini memanfaatkan kecenderungan harga saham dengan menilai hubungan antara tren jangka pendek dan jangka panjang. Strategi ini mudah diterapkan, logis jelas, dan merupakan dasar dari banyak strategi perdagangan kuantitatif.

Kode Sumber Strategi
/*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")