Strategi crossover purata bergerak adalah strategi perdagangan kuantitatif yang sangat biasa. Ia menggunakan salib emas dan salib kematian purata bergerak untuk menentukan trend dan keuntungan. Apabila purata bergerak jangka pendek melintasi di atas purata bergerak jangka panjang, ia menandakan trend menaik, dan kedudukan panjang boleh diambil. Apabila purata bergerak jangka pendek melintasi di bawah purata bergerak jangka panjang, ia menandakan trend menurun, dan kedudukan pendek boleh diambil.
Strategi ini berdasarkan salib emas dan salib kematian purata bergerak untuk menentukan titik masuk dan keluar. Kod menggunakan dua parameter input booleanupOrDown
danlongOrShort
untuk menentukan panjang atau pendek;percentInput
untuk menetapkan kadar terendah perubahan harga;closePositionDays
untuk menetapkan bilangan hari untuk memegang kedudukan.
Logik terasnya ialah: mengira peningkatan / penurunan hari ini berbanding semalam. Jika ia mencapai peratusan ambang input, isyarat perdagangan dicetuskan. Jika ia adalah isyarat panjang, apabila harga hari ini meningkat lebih daripada ambang berbanding semalam, pergi panjang. Jika ia adalah isyarat pendek, apabila harga hari ini menurun lebih daripada ambang berbanding semalam, pergi pendek.
Selepas pergi panjang/pendek, hari kemasukan dan 4 hari akan datang akan ditandakan dengan warna pada carta.
Pengurusan Risiko:
Strategi crossover purata bergerak adalah strategi perdagangan kuantitatif yang sangat mudah dan praktikal. Dengan menilai hubungan antara trend jangka pendek dan jangka panjang, ia mendapat keuntungan dari sifat trend harga aset. Strategi ini mudah dilaksanakan dengan logik yang jelas, dan membentuk asas banyak strategi perdagangan kuantitatif. Kita boleh mendapatkan prestasi yang lebih baik melalui penyesuaian parameter dan pengoptimuman. Tetapi kita juga perlu menguruskan risiko dan mengelakkan 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")