Strategi perdagangan crossover rata-rata bergerak adalah strategi perdagangan kuantitatif yang relatif umum. Strategi ini menghasilkan sinyal perdagangan dengan menghitung rata-rata bergerak dari periode yang berbeda dan sesuai dengan situasi crossover mereka. Secara khusus, strategi ini menghitung rata-rata bergerak eksponensial (EMA) dari 4 periode, 8 periode dan 20 periode. Ketika EMA jangka pendek melintasi di atas EMA jangka panjang, pergi panjang; ketika EMA jangka pendek melintasi di bawah EMA jangka panjang, pergi pendek.
Logika inti dari strategi ini adalah:
Melalui metode ini, kita memanfaatkan persilangan antara rata-rata bergerak periode yang berbeda untuk menilai sinyal pasar, dan menggunakan arah rata-rata bergerak periode terpanjang untuk menyaring sinyal palsu, membangun strategi perdagangan yang stabil.
Keuntungan utama dari strategi ini adalah:
Ada juga beberapa risiko dengan strategi ini:
Solusi utama adalah:
Strategi dapat dioptimalkan dalam aspek berikut:
Optimalisasi periode: Tentukan kombinasi periode MA yang optimal sesuai dengan varietas yang berbeda.
Optimasi stop loss: Tentukan titik stop loss yang wajar untuk mengendalikan satu kerugian.
Optimasi parameter: Optimasi parameter secara dinamis menggunakan algoritma genetik, rantai Markov, dll.
Fusi model: Integrasi dengan LSTM, RNN dan model pembelajaran mendalam lainnya untuk mengekstrak lebih banyak Alpha.
Optimalisasi portofolio: Dikombinasikan dengan strategi indikator teknis lainnya untuk membangun portofolio strategi.
Secara umum, strategi crossover rata-rata bergerak adalah strategi perdagangan kuantitatif yang relatif klasik dan umum digunakan. Strategi ini memiliki logika sederhana dan mudah dipahami dan diimplementasikan, dengan stabilitas tertentu. Tetapi ada juga beberapa masalah, seperti menghasilkan sinyal palsu, ketidakmampuan untuk beradaptasi dengan perubahan pasar, dll. Masalah ini dapat ditingkatkan melalui optimasi parameter, optimasi stop loss, fusi model, dan metode lainnya. Secara keseluruhan, strategi rata-rata bergerak dapat digunakan sebagai modul dasar dalam kotak alat strategi, dikombinasikan dengan strategi yang lebih kompleks untuk membangun strategi kompleks yang kuat.
/*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)