Strategi perdagangan crossover purata bergerak adalah strategi perdagangan kuantitatif yang agak biasa. Strategi ini menghasilkan isyarat perdagangan dengan mengira purata bergerak dari tempoh yang berbeza dan mengikut situasi silang mereka. Khususnya, ia mengira purata bergerak eksponen (EMA) dari 4 tempoh, 8 tempoh dan 20 tempoh. Apabila EMA jangka pendek melintasi di atas EMA jangka panjang, pergi panjang; apabila EMA jangka pendek melintasi di bawah EMA jangka panjang, pergi pendek.
Logik teras strategi ini ialah:
Melalui kaedah ini, kami memanfaatkan persilangan antara purata bergerak tempoh yang berbeza untuk menilai isyarat pasaran, dan menggunakan arah purata bergerak tempoh terpanjang untuk menapis isyarat palsu, membina strategi perdagangan yang stabil.
Kelebihan utama strategi ini ialah:
Terdapat juga beberapa risiko dengan strategi ini:
Penyelesaian utama ialah:
Strategi ini boleh dioptimumkan dalam aspek berikut:
Pengoptimuman tempoh: Tentukan kombinasi tempoh MA yang optimum mengikut pelbagai jenis.
Pengoptimuman Stop Loss: Tetapkan titik Stop Loss yang munasabah untuk mengawal kerugian tunggal.
Pengoptimuman parameter: Mengoptimumkan parameter secara dinamik menggunakan algoritma genetik, rantaian Markov, dll.
Penggabungan model: Mengintegrasikan dengan LSTM, RNN dan model pembelajaran mendalam lain untuk mengekstrak lebih banyak Alpha.
Pengoptimuman portfolio: Gabungkan dengan strategi penunjuk teknikal lain untuk membina portfolio strategi.
Secara umum, strategi crossover purata bergerak adalah strategi perdagangan kuantitatif yang agak klasik dan biasa digunakan. Strategi ini mempunyai logika yang mudah difahami dan dilaksanakan, dengan kestabilan tertentu. Tetapi terdapat juga beberapa masalah, seperti menghasilkan isyarat palsu, ketidakupayaan untuk menyesuaikan diri dengan perubahan pasaran, dll. Isu-isu ini boleh diperbaiki melalui pengoptimuman parameter, pengoptimuman kehilangan berhenti, penggabungan model, dan kaedah lain. Secara keseluruhan, strategi purata bergerak boleh digunakan sebagai modul asas dalam kotak alat strategi, digabungkan dengan strategi yang lebih kompleks untuk membina strategi kompleks yang kukuh.
/*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)