Strategi Perdagangan Crossover Purata Bergerak

Penulis:ChaoZhang, Tarikh: 2024-01-24 14:59:44
Tag:

img

Ringkasan

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.

Logika Strategi

Logik teras strategi ini ialah:

  1. Mengira garis EMA 4 tempoh, 8 tempoh dan 20 tempoh.
  2. Menilai hubungan antara garis EMA 4 tempoh dan garis EMA 8 tempoh:
    1. Apabila garis EMA 4 tempoh melintasi di atas garis EMA 8 tempoh, ia bermakna trend harga semakin kuat, yang merupakan isyarat kenaikan.
    2. Apabila EMA 4 tempoh melintasi di bawah EMA 8 tempoh, ia bermakna trend harga melemah, yang merupakan isyarat penurunan.
  3. Pada masa yang sama, menilai arah garis EMA 20 tempoh:
    1. Jika garis EMA 20 tempoh naik, maka masukkan panjang.
    2. Jika garis EMA 20 tempoh turun, masukkan Short.
  4. Apabila hubungan antara garis EMA 4 tempoh dan garis EMA 8 tempoh berbalik, Sediakan Keluar.
  5. Apabila arah garis EMA 20 tempoh berbalik, keluar sekarang.

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 Strategi

Kelebihan utama strategi ini ialah:

  1. Logik strategi adalah mudah dan jelas, mudah difahami dan dilaksanakan.
  2. Penapisan keadaan berganda boleh mengurangkan isyarat palsu.
  3. Peningkatan daripada EMA 20 tempoh boleh mengenal pasti trend utama dan meningkatkan kestabilan.
  4. Parameter yang boleh disesuaikan untuk menyesuaikan kekerapan dagangan.
  5. Mudah digabungkan dengan penunjuk atau model lain untuk membina strategi yang kompleks.

Risiko Strategi

Terdapat juga beberapa risiko dengan strategi ini:

  1. Strategi purata bergerak berganda cenderung menghasilkan isyarat palsu.
  2. Tempoh tetap tidak dapat disesuaikan dengan perubahan pasaran.
  3. Ia mudah untuk menyebabkan kerugian semasa turun naik pasaran.

Penyelesaian utama ialah:

  1. Memendekkan tempoh penahan dengan sewajarnya dan menghentikan kerugian tepat pada masanya.
  2. Mengoptimumkan parameter secara dinamik dan menyesuaikan tempoh purata bergerak.
  3. Gabungkan dengan penunjuk atau model lain untuk membuat strategi yang kompleks.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Pengoptimuman tempoh: Tentukan kombinasi tempoh MA yang optimum mengikut pelbagai jenis.

  2. Pengoptimuman Stop Loss: Tetapkan titik Stop Loss yang munasabah untuk mengawal kerugian tunggal.

  3. Pengoptimuman parameter: Mengoptimumkan parameter secara dinamik menggunakan algoritma genetik, rantaian Markov, dll.

  4. Penggabungan model: Mengintegrasikan dengan LSTM, RNN dan model pembelajaran mendalam lain untuk mengekstrak lebih banyak Alpha.

  5. Pengoptimuman portfolio: Gabungkan dengan strategi penunjuk teknikal lain untuk membina portfolio strategi.

Ringkasan

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)
        
    


Lebih lanjut