Strategi perdagangan berdasarkan persilangan purata bergerak


Tarikh penciptaan: 2024-01-24 14:59:44 Akhirnya diubah suai: 2024-01-24 14:59:44
Salin: 0 Bilangan klik: 528
1
fokus pada
1617
Pengikut

Strategi perdagangan berdasarkan persilangan purata bergerak

Gambaran keseluruhan

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.

Prinsip Strategi

Logik utama strategi ini ialah:

  1. Hitung garis EMA 4 kitaran, 8 kitaran dan 20 kitaran.
  2. Untuk menilai hubungan antara garis EMA 4 dan garis EMA 8:
    1. Apabila garis EMA 4 kitaran melalui garis EMA 8 kitaran, menunjukkan pergerakan harga menjadi lebih kuat, dan merupakan isyarat berbilang kepala.
    2. Apabila 4 kitaran EMA melepasi 8 kitaran EMA, menunjukkan pergerakan harga menjadi lemah, dan merupakan isyarat kosong.
  3. Ini juga menentukan arah garis EMA 20 pusingan:
    1. Jika EMA 20 naik, maka Enter Long.
    2. Jika EMA 20 turun, Enter Short.
  4. Apabila 4 kitaran EMA garis dan 8 kitaran EMA garis hubungan terbalik, Prepare Exit。
  5. Apabila 20 pusingan EMA berbalik arah, Exit Now

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.

Kelebihan Strategik

Strategi ini mempunyai beberapa kelebihan:

  1. Logik strategi mudah difahami dan dilaksanakan.
  2. Dengan menggunakan penapis dua syarat, ia dapat mengurangkan isyarat palsu.
  3. Peningkatan EMA 20-siklus dapat mengenal pasti trend besar dan meningkatkan kestabilan.
  4. Parameter yang boleh disesuaikan untuk menyesuaikan kekerapan transaksi.
  5. Ia mudah digabungkan dengan indikator atau model lain untuk membina strategi komposit.

Risiko Strategik

Strategi ini mempunyai beberapa risiko:

  1. Strategi dua garis rata mudah menghasilkan isyarat palsu.
  2. Siklus tetap tidak dapat menyesuaikan diri dengan perubahan pasaran.
  3. Ia boleh menyebabkan kerugian apabila pasaran bergolak.

Penyelesaian utama ialah:

  1. Memendekkan tempoh pegangan dengan sewajarnya dan menghentikan kerugian tepat pada masanya.
  2. Parameter pengoptimuman dinamik, menyesuaikan kitaran garis purata.
  3. Mencipta strategi komposit yang digabungkan dengan petunjuk atau model lain.

Pengoptimuman Strategi

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Pengoptimuman kitaran: menentukan kombinasi kitaran MA yang optimum mengikut pelbagai jenis

    1. Optimasi hentikan kerugian: menetapkan titik hentikan yang munasabah, mengawal kerugian tunggal Optimasi parameter: menggunakan algoritma genetik, rantaian Markov dan lain-lain untuk mengoptimumkan parameter secara dinamik
  2. Perpaduan model: integrasi dengan model pembelajaran mendalam seperti LSTM, RNN, dan lain-lain untuk mendapatkan lebih banyak Alpha

  3. Optimasi Portfolio: membina portfolio strategi dengan indikator lain

ringkaskan

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.

Kod sumber strategi
/*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)