Strategi perpindahan rata-rata adalah strategi perdagangan kuantitatif yang sangat biasa. Strategi ini menggunakan perpindahan rata-rata untuk menilai trend, untuk mendapatkan keuntungan. Apabila anda melintasi rata-rata bergerak jangka pendek di atas rata-rata bergerak jangka panjang, ini menunjukkan bahawa harga saham mula naik, anda boleh melakukan lebih banyak; apabila anda melintasi rata-rata bergerak jangka pendek di bawah rata-rata bergerak jangka panjang, ini menunjukkan bahawa harga saham mula turun, anda boleh melakukan kosong.
Strategi ini berdasarkan pada garisan rata-rata bergerak untuk menentukan masa pembelian dan penjualan.upOrDowndanlongOrShortDua parameter masukan Boolean untuk menilai terlalu banyak kerja kosong; menggunakanpercentInputMasukkan parameter untuk menetapkan peratusan penurunan harga saham; gunakanclosePositionDaysMasukkan parameter untuk menetapkan bilangan hari memegang kedudukan.
Logik utama strategi ini adalah: mengira kenaikan dan penurunan hari ini berbanding semalam, dan memberi isyarat perdagangan jika mencapai peratusan penurunan nilai input. Jika bullish, lakukan lebih banyak apabila kenaikan hari ini berbanding semalam melebihi penurunan nilai; jika bearish, lakukan kosong apabila hari ini berbanding semalam turun melebihi penurunan nilai.
Selepas melakukan lebih banyak masa kosong, ia akan ditandakan pada carta dengan warna yang berbeza pada hari itu dan 4 hari selepas itu. 4 hari selepas itu, kedudukan kosong akan dihapuskan secara automatik.
Langkah kawalan risiko:
Strategi crossover linear bergerak adalah strategi perdagangan kuantitatif yang sangat mudah dan praktikal. Ia memanfaatkan kecenderungan harga saham dengan menilai hubungan trend jangka pendek dan jangka panjang. Strategi ini mudah dilaksanakan, logiknya jelas, dan merupakan asas bagi 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")