EMA23/EMA50 Strategi Perdagangan Kuantitatif Crossover Rata-rata Bergerak Ganda

Penulis:ChaoZhangTanggal: 2024-04-26 15:29:21
Tag:EMAEMA23EMA50

img

Gambaran umum

Strategi ini didasarkan pada sinyal silang EMA23 dan EMA50 untuk perdagangan. Ketika EMA23 melintasi di atas EMA50, itu menghasilkan sinyal beli, dan ketika melintasi di bawah, itu menghasilkan sinyal jual. Strategi ini juga menerapkan stop loss untuk posisi panjang ketika harga turun di bawah EMA50 dan untuk posisi pendek ketika harga naik di atas EMA50. Selain itu, strategi ini kembali memasuki pasar ketika harga bergerak kembali di atas EMA50. Strategi ini cocok untuk jangka waktu 30 menit.

Prinsip Strategi

  1. Hitung dua rata-rata bergerak eksponensial: EMA23 dan EMA50.
  2. Menghasilkan sinyal beli ketika EMA23 melintasi EMA50, dan sinyal jual ketika EMA23 melintasi EMA50.
  3. Untuk posisi panjang, menerapkan stop loss jika harga jatuh di bawah EMA50 dan harga penutupan lebih rendah dari EMA50 dari lilin sebelumnya.
  4. Untuk posisi pendek, menerapkan stop loss jika harga naik di atas EMA50 dan harga penutupan lebih tinggi dari EMA50 dari lilin sebelumnya.
  5. Untuk posisi panjang, masuk kembali ke pasar jika harga bergerak kembali di atas EMA50, dengan harga penutupan dan harga tinggi keduanya lebih tinggi dari EMA50, dan EMA23 lebih tinggi dari EMA50.
  6. Untuk posisi pendek, masuk kembali ke pasar jika harga bergerak kembali di bawah EMA50, dengan harga penutupan dan harga rendah keduanya di bawah EMA50, dan EMA23 di bawah EMA50.
  7. Tetapkan tingkat take profit untuk posisi panjang pada 1,6 kali harga masuk, dan untuk posisi pendek pada 0,75 kali harga masuk.

Keuntungan Strategi

  1. Crossover rata-rata bergerak ganda adalah indikator tren yang sederhana dan efektif yang membantu menangkap tren.
  2. Mekanisme stop loss membantu mengendalikan risiko dan mencegah kerugian berkembang.
  3. Mekanisme re-entry memungkinkan strategi untuk menangkap tren lagi, meningkatkan potensi keuntungan.
  4. Tingkat mengambil keuntungan membantu mengunci keuntungan secara tepat waktu.
  5. Kerangka waktu 30 menit memberikan lebih banyak peluang perdagangan sementara juga menyaring beberapa kebisingan.

Risiko Strategi

  1. EMA, sebagai indikator yang mengikuti tren, memiliki keterlambatan dan mungkin melewatkan titik masuk yang optimal.
  2. Penempatan level stop loss mungkin tidak dioptimalkan, yang mengarah pada stop-out prematur.
  3. Perdagangan yang sering dapat meningkatkan biaya transaksi dan mempengaruhi profitabilitas.
  4. Strategi ini dapat menghasilkan lebih banyak sinyal palsu di pasar range.
  5. Tingkat keuntungan tetap dapat membatasi potensi keuntungan strategi.

Arah Optimasi Strategi

  1. Pertimbangkan untuk memperkenalkan indikator teknis lain untuk membantu menentukan tren dan meningkatkan titik masuk dan keluar, seperti MACD, RSI, dll.
  2. Optimalkan penempatan level stop loss, dengan mempertimbangkan penggunaan indikator volatilitas seperti ATR untuk menyesuaikan posisi stop loss secara dinamis.
  3. Mengontrol frekuensi perdagangan dengan menetapkan kondisi penyaringan perdagangan yang tepat untuk mengurangi sinyal palsu.
  4. Gunakan pengaturan parameter strategi yang berbeda untuk pasar yang berkisar dan tren.
  5. Membuat tingkat mengambil keuntungan lebih fleksibel, seperti menyesuaikan mereka secara dinamis berdasarkan volatilitas pasar, rasio risiko-manfaat, dll.

Ringkasan

Strategi ini adalah strategi perdagangan kuantitatif yang didasarkan pada persilangan dua rata-rata bergerak, EMA23 dan EMA50. Ini menangkap tren melalui sinyal persilangan dan menerapkan mekanisme stop-loss dan re-entry untuk mengendalikan risiko dan meningkatkan potensi keuntungan. Strategi ini sederhana dan mudah dipahami, cocok untuk perdagangan jangka menengah hingga pendek pada jangka waktu 30 menit. Namun, strategi ini juga memiliki beberapa keterbatasan, seperti identifikasi tren yang tertinggal, penempatan stop-loss suboptimal, dan kinerja yang buruk di pasar kisaran. Di masa depan, strategi dapat dioptimalkan dengan memperkenalkan lebih banyak indikator teknis, mengoptimalkan posisi stop-loss, mengontrol frekuensi perdagangan, membedakan antara pasar tren dan kisaran, dan menerapkan tingkat take-profit dinamis untuk mencapai pengembalian yang lebih kuat.


/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover Strategy", overlay=true)

// EMA 23 ve EMA 50'nin hesaplanması
ema23 = ta.ema(close, 23)
ema50 = ta.ema(close, 50)

// Ana alım kuralı: EMA 23 ve EMA 50'nin yukarı kesilmesi
buySignal = ta.crossover(ema23, ema50)

// Ana satış kuralı: EMA 23 ve EMA 50'nin aşağı kesilmesi
sellSignal = ta.crossunder(ema23, ema50)

// Long pozisyon stop seviyesi
longStopLoss = low < ema50 and close < ema50[1]

// Short pozisyon stop seviyesi
shortStopLoss = high > ema50 and close > ema50[1]

// Long pozisyon için tekrar giriş kuralı
longReEntry = high > ema50 and close > ema50 and close > ema50 and ema23 > ema50

// Short pozisyon için tekrar giriş kuralı
shortReEntry = low < ema50 and close < ema50 and close < ema50 and ema23 < ema50

// Long işlemde kar alma seviyesi (%60)
longTakeProfit = strategy.position_avg_price * 1.60

// Short işlemde kar alma seviyesi (%25)
shortTakeProfit = strategy.position_avg_price * 0.75

// Long işlem için yeniden giriş koşulu
longReEntryCondition = strategy.position_size <= 0 and longReEntry

// Short işlem için yeniden giriş koşulu
shortReEntryCondition = strategy.position_size >= 0 and shortReEntry

// Geriye dönük test için başlangıç tarihi (01.01.2022)
startDate = timestamp(2022, 01, 01, 00, 00)

if (time >= startDate)
    if (buySignal)
        strategy.entry("Buy", strategy.long)

    if (sellSignal)
        strategy.entry("Sell", strategy.short)

    if (strategy.position_size > 0 and (longStopLoss or close >= longTakeProfit))
        strategy.close("Buy")

    if (strategy.position_size < 0 and (shortStopLoss or close <= shortTakeProfit))
        strategy.close("Sell")

    if (longReEntryCondition)
        strategy.entry("Buy", strategy.long)

    if (shortReEntryCondition)
        strategy.entry("Sell", strategy.short)


Berkaitan

Lebih banyak