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.
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.
Tindakan pengendalian risiko:
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.
/*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")