
Strategi perdagangan silang rata-rata bergerak adalah strategi perdagangan kuantitatif yang lebih biasa. Strategi ini menghasilkan isyarat perdagangan dengan mengira purata bergerak dari pelbagai kitaran dan berdasarkan persimpangan mereka. Khususnya, dengan mengira purata bergerak indeks dari 4 kitaran, 8 kitaran dan 20 kitaran (EMA) dan melakukan lebih banyak apabila EMA jangka pendek melintasi EMA jangka panjang; dan kosong apabila EMA jangka pendek melanggar EMA jangka panjang.
Logik utama strategi ini ialah:
Melalui kaedah ini, kami menggunakan persilangan antara garis purata kitaran yang berbeza untuk menilai isyarat pasaran, sambil menggunakan arah garis purata kitaran terpanjang untuk menyaring isyarat palsu dan membina strategi perdagangan yang stabil.
Strategi ini mempunyai beberapa kelebihan:
Strategi ini mempunyai beberapa risiko:
Penyelesaian utama ialah:
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Pengoptimuman kitaran: menentukan kombinasi kitaran MA yang optimum mengikut pelbagai jenis
Perpaduan model: integrasi dengan model pembelajaran mendalam seperti LSTM, RNN, dan lain-lain untuk mendapatkan lebih banyak Alpha
Optimasi Portfolio: membina portfolio strategi dengan indikator lain
Strategi silang purata bergerak secara keseluruhan adalah strategi perdagangan kuantitatif yang lebih klasik dan biasa digunakan. Logiknya mudah, mudah difahami dan dilaksanakan, mempunyai kestabilan tertentu. Tetapi ada juga beberapa masalah, seperti menghasilkan isyarat palsu, tidak dapat menyesuaikan diri dengan perubahan pasaran, dan sebagainya.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1, overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2.05)
//stock strategy
strategy(title = "stub", overlay = true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true, commission_type=strategy.commission.percent,commission_value=.0,default_qty_value=10000)
testStartYear = input(1900, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12, "Backtest Start Month")
testEndDay = input(1, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testPeriod() => true
ema1 = ema(close,4)
ema2 = ema(close,8)
ema3 = ema(close,20)
go_long = ema1[0] > ema2[0] and ema3[0] > ema3[1]
exit_long = ema1[0] < ema2[0] or ema3[0] < ema3[1]
go_short = ema1[0] < ema2[0] and ema3[0] < ema3[1]
exit_short = ema1[0] > ema2[0] or ema3[0] > ema3[1]
if testPeriod()
strategy.entry("simpleBuy", strategy.long, when=go_long)
strategy.exit("simpleBuy", "simpleSell",when=exit_long)
strategy.entry("simpleSell", strategy.short,when=go_short)
strategy.exit("simpleSell", "simpleSell",when=exit_short)