Strategi perdagangan kuantitatif berdasarkan persilangan EMA ganda


Tanggal Pembuatan: 2023-11-21 11:41:40 Akhirnya memodifikasi: 2023-11-21 11:41:40
menyalin: 0 Jumlah klik: 620
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif berdasarkan persilangan EMA ganda

Ringkasan

Strategi ini menilai tren pasar dengan menghitung persilangan garis rata-rata EMA dari dua periode yang berbeda, dan dengan demikian menghasilkan sinyal perdagangan. Ketika EMA jangka pendek berada di atas EMA jangka panjang, strategi ini menganggap pasar masuk ke tren naik, dan strategi ini akan membuka lebih banyak posisi; Ketika EMA jangka pendek berada di bawah EMA jangka panjang, dan menganggap pasar masuk ke tren turun, strategi ini akan keluar dari posisi rata.

Prinsip Strategi

Strategi ini terutama menggunakan teori bercabang dua rata-rata EMA. Rata-rata EMA ganda terbagi menjadi EMA panjang dan EMA pendek. Parameter EMA pendek ditetapkan untuk 10 hari dan EMA panjang ditetapkan untuk 21 hari.

Ketika EMA pendek melewati EMA panjang, menghasilkan sinyal beli; Ketika EMA pendek melewati EMA panjang di bawah, menghasilkan sinyal jual. Strategi ini juga menetapkan margin pertumbuhan, hanya membuka posisi lebih banyak jika pertumbuhan melebihi margin, dan melonggarkan posisi jika penurunan melebihi margin.

Secara khusus, kondisi pembelian adalah EMA jangka pendek lebih tinggi dari EMA jangka panjang, dan tingkat pertumbuhan harga saham lebih tinggi dari batas positif yang ditetapkan; kondisi posisi kosong adalah EMA jangka pendek lebih rendah dari EMA jangka panjang, dan tingkat pertumbuhan harga saham lebih rendah dari batas negatif yang ditetapkan.

Keunggulan Strategis

  • Teori garpu emas dengan dua garis rata EMA relatif sederhana dan dapat diandalkan
  • Tingkatkan setoran untuk menghindari kesalahan transaksi saat pertumbuhan lemah
  • Rasio kerugian maksimum yang dapat dikontrol secara ketat
  • Fleksibel menyesuaikan parameter EMA rata-rata untuk periode yang berbeda

Analisis risiko

  • EMA rata-rata memiliki keterlambatan dan mungkin melewatkan titik balik harga
  • Persilangan rata-rata memiliki keterlambatan tertentu yang dapat menyebabkan kehilangan waktu terbaik untuk membuka posisi
  • Perlu bergantung pada parameter optimasi, parameter yang tidak tepat dapat menyebabkan perdagangan sering atau kurang sinyal

Arah optimasi

  • Optimalisasi dalam kombinasi dengan indikator lain, seperti MACD, KD, dan lain-lain, untuk meningkatkan akurasi sinyal
  • Meningkatkan strategi stop loss, seperti melacak stop loss, untuk memastikan profit maksimal
  • Mengoptimalkan parameter siklus EMA, mengatur parameter optimal untuk varietas yang berbeda
  • Mengoptimalkan penyesuaian parameter dinamis yang menggabungkan data real-time dengan metode pembelajaran mesin

Meringkaskan

Strategi ini secara keseluruhan relatif sederhana dan dapat diandalkan, menilai tren harga melalui persilangan dua EMA, dan mengatur penurunan tingkat pertumbuhan untuk mengirimkan sinyal perdagangan. Dibandingkan dengan persilangan rata-rata tunggal, sinyal palsu dapat disaring. Namun, rata-rata EMA sendiri memiliki masalah keterlambatan, dan kombinasi dengan indikator lain atau parameter dinamis dapat meningkatkan efektivitas strategi lebih lanjut.

Kode 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)