Strategi perdagangan kuantitatif berdasarkan crossover EMA berganda


Tarikh penciptaan: 2023-11-21 11:41:40 Akhirnya diubah suai: 2023-11-21 11:41:40
Salin: 0 Bilangan klik: 344
1
fokus pada
1166
Pengikut

Strategi perdagangan kuantitatif berdasarkan crossover EMA berganda

Gambaran keseluruhan

Strategi ini menilai trend pasaran dengan mengira persilangan garis rata-rata EMA dari dua tempoh yang berbeza, dan dengan itu menghasilkan isyarat perdagangan. Apabila EMA jangka pendek melintasi EMA jangka panjang, strategi ini menganggap pasaran memasuki trend naik, strategi ini akan membuka lebih banyak kedudukan; Apabila EMA jangka pendek melintasi EMA jangka panjang, strategi ini menganggap pasaran memasuki trend menurun, strategi ini akan keluar dari kedudukan rata.

Prinsip Strategi

Strategi ini digunakan terutamanya teori garisan mati garisan emas EMA ganda. Garis rata EMA ganda dibahagikan kepada EMA panjang dan EMA pendek. Parameter EMA pendek ditetapkan untuk 10 hari dan EMA panjang ditetapkan untuk 21 hari.

Apabila EMA pendek melintasi EMA panjang, ia menghasilkan isyarat beli; apabila EMA pendek melintasi EMA panjang, ia menghasilkan isyarat jual. Strategi ini juga menetapkan margin pertumbuhan, dan hanya membuka lebih banyak kedudukan apabila pertumbuhan melebihi margin, dan melonggarkan kedudukan apabila penurunan melebihi margin.

Khususnya, syarat pembelian adalah EMA jangka pendek lebih tinggi daripada EMA jangka panjang, dan kadar pertumbuhan harga saham melebihi nilai ambang positif yang ditetapkan; syarat kedudukan kosong adalah EMA jangka pendek lebih rendah daripada EMA jangka panjang, dan kadar pertumbuhan harga saham lebih rendah daripada nilai ambang negatif yang ditetapkan.

Kelebihan Strategik

  • Teori garpu mati garpu emas yang menggunakan dua garis rata EMA, agak mudah dan boleh dipercayai
  • Meningkatkan penetapan nilai tunjangan pertumbuhan untuk mengelakkan kesilapan perdagangan apabila pertumbuhan lemah
  • Rasio kerugian maksimum yang boleh dikawal ketat
  • Parameter EMA rata-rata boleh disesuaikan secara fleksibel untuk tempoh yang berbeza

Analisis risiko

  • EMA rata-rata mempunyai ketinggalan dan mungkin terlepas titik perubahan harga
  • Persaingan rata-rata mempunyai kemerosotan yang boleh menyebabkan kehilangan peluang terbaik untuk membuka kedudukan
  • Perlu bergantung kepada pengoptimuman parameter, parameter yang ditetapkan dengan tidak betul boleh menyebabkan perdagangan yang kerap atau kurang isyarat

Arah pengoptimuman

  • Dioptimumkan dalam kombinasi dengan penunjuk lain, seperti MACD, KD, dan lain-lain, untuk meningkatkan ketepatan isyarat
  • Menambah strategi berhenti kerugian, seperti menjejaki berhenti kerugian, untuk memastikan keuntungan maksimum
  • Mengoptimumkan parameter kitaran EMA, menetapkan parameter terbaik untuk pelbagai jenis
  • Menggabungkan data masa nyata dengan kaedah pembelajaran mesin untuk penyesuaian parameter dinamik

ringkaskan

Strategi ini secara keseluruhan lebih mudah dipercayai, menilai trend harga melalui dua EMA bersilang, dan menetapkan nilai terendah pertumbuhan untuk menghantar isyarat perdagangan. Berbanding dengan persilangan garis purata tunggal, isyarat palsu boleh disaring. Tetapi garis purata EMA sendiri mempunyai masalah keterlambatan, gabungan dengan petunjuk lain atau parameter dinamik dapat meningkatkan lagi keberkesanan strategi.

Kod sumber strategi
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="ema(ema10-21)", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 15000, commission_type = strategy.commission.percent, commission_value = 0.2)

useTimeLimit    = input(defval = false, title = "Use Start Time Limiter?")
startYear       = input(defval = 2016, title = "Start From Year",  minval = 0, step = 1)
startMonth      = input(defval = 05, title = "Start From Month",  minval = 0,step = 1)
startDay        = input(defval = 01, title = "Start From Day",  minval = 0,step = 1)
startHour       = input(defval = 00, title = "Start From Hour",  minval = 0,step = 1)
startMinute     = input(defval = 00, title = "Start From Minute",  minval = 0,step = 1)

startTimeOk() => true

lenght0 = input(10)
lenght1 = input(21)

source = close

EmaShort = ema(ema(source, lenght0), lenght0)
EmaLong = ema(ema(source, lenght1),lenght1)
plot(EmaShort, color=red)
plot(EmaLong, color=purple)

growth = ((EmaShort-EmaLong)*100)/((EmaShort+EmaLong)/2)
thresholdUp = input(defval=0.05, title="Threshold Up", type=float, step=0.01)
thresholdDown = input(defval=-0.165, title="Threshold Down", type=float, step=0.001)

if( startTimeOk() )
    buy_condition = EmaShort > EmaLong and growth > thresholdUp
    buy_exit_condition = EmaShort < EmaLong and growth < thresholdDown
    strategy.entry("buy", strategy.long, comment="buy", when=buy_condition)
    strategy.close(id='buy', when=buy_exit_condition)