EMA23/EMA50 Strategi Dagangan Kuantitatif Crossover Purata Bergerak Berganda

Penulis:ChaoZhang, Tarikh: 2024-04-26 15:29:21
Tag:EMAEMA23EMA50

img

Ringkasan

Strategi ini berdasarkan isyarat silang EMA23 dan EMA50 untuk perdagangan. Apabila EMA23 melintasi di atas EMA50, ia menghasilkan isyarat beli, dan apabila melintasi di bawah, ia menghasilkan isyarat jual. Strategi ini juga melaksanakan stop-loss untuk kedudukan panjang apabila harga jatuh di bawah EMA50 dan untuk kedudukan pendek apabila harga naik di atas EMA50. Di samping itu, strategi ini memasuki pasaran semula apabila harga bergerak kembali di atas EMA50. Strategi ini sesuai untuk jangka masa 30 minit.

Prinsip Strategi

  1. Mengira dua purata bergerak eksponen: EMA23 dan EMA50.
  2. Menghasilkan isyarat beli apabila EMA23 melintasi di atas EMA50, dan isyarat jual apabila EMA23 melintasi di bawah EMA50.
  3. Untuk kedudukan panjang, melaksanakan stop-loss jika harga jatuh di bawah EMA50 dan harga penutupan lebih rendah daripada EMA50 lilin sebelumnya.
  4. Untuk kedudukan pendek, melaksanakan stop-loss jika harga meningkat di atas EMA50 dan harga penutupan lebih tinggi daripada EMA50 lilin sebelumnya.
  5. Untuk kedudukan panjang, masuk semula ke pasaran jika harga bergerak kembali di atas EMA50, dengan harga penutupan dan harga tinggi kedua-duanya lebih tinggi daripada EMA50, dan EMA23 lebih tinggi daripada EMA50.
  6. Untuk kedudukan pendek, masuk semula ke pasaran jika harga bergerak kembali di bawah EMA50, dengan harga penutupan dan harga rendah kedua-duanya lebih rendah daripada EMA50, dan EMA23 lebih rendah daripada EMA50.
  7. Tetapkan tahap mengambil keuntungan untuk kedudukan panjang pada 1.6 kali harga masuk, dan untuk kedudukan pendek pada 0.75 kali harga masuk.

Kelebihan Strategi

  1. Crossover purata bergerak berganda adalah penunjuk trend yang mudah dan berkesan yang membantu menangkap trend.
  2. Mekanisme stop-loss membantu mengawal risiko dan mencegah kerugian berkembang.
  3. Mekanisme kemasukan semula membolehkan strategi untuk menangkap trend lagi, meningkatkan potensi keuntungan.
  4. Tahap mengambil keuntungan membantu mengunci keuntungan dengan tepat pada masanya.
  5. Tempoh 30 minit memberikan lebih banyak peluang perdagangan sambil juga menapis beberapa bunyi bising.

Risiko Strategi

  1. EMA, sebagai penunjuk trend, mempunyai kelewatan dan mungkin terlepas titik kemasukan yang optimum.
  2. Penempatan paras stop-loss mungkin tidak dioptimumkan, yang membawa kepada stop-out awal.
  3. Perdagangan yang kerap boleh meningkatkan kos transaksi dan menjejaskan keuntungan.
  4. Strategi ini boleh menghasilkan lebih banyak isyarat palsu di pasaran yang berbeza.
  5. Tahap keuntungan tetap boleh mengehadkan potensi keuntungan strategi.

Arahan Pengoptimuman Strategi

  1. Pertimbangkan untuk memperkenalkan penunjuk teknikal lain untuk membantu menentukan trend dan meningkatkan titik masuk dan keluar, seperti MACD, RSI, dll.
  2. Mengoptimumkan penempatan paras stop-loss, mempertimbangkan penggunaan penunjuk turun naik seperti ATR untuk menyesuaikan kedudukan stop-loss secara dinamik.
  3. Kawalan kekerapan perdagangan dengan menetapkan keadaan penapisan perdagangan yang sesuai untuk mengurangkan isyarat palsu.
  4. Gunakan tetapan parameter strategi yang berbeza untuk pasaran yang berbeza dan tren.
  5. Membuat tahap mengambil keuntungan lebih fleksibel, seperti menyesuaikan mereka secara dinamik berdasarkan turun naik pasaran, nisbah risiko-balasan, dll.

Ringkasan

Strategi ini adalah strategi perdagangan kuantitatif berdasarkan persilangan dua purata bergerak, EMA23 dan EMA50. Ia menangkap trend melalui isyarat persilangan dan melaksanakan mekanisme stop-loss dan re-entry untuk mengawal risiko dan meningkatkan potensi keuntungan. Strategi ini mudah dan mudah difahami, sesuai untuk perdagangan jangka menengah hingga pendek pada jangka masa 30 minit. Walau bagaimanapun, strategi ini juga mempunyai beberapa batasan, seperti pengenalan trend yang tertinggal, penempatan stop-loss suboptimal, dan prestasi yang buruk di pasaran berkisar. Pada masa akan datang, strategi dapat dioptimumkan dengan memperkenalkan lebih banyak penunjuk teknikal, mengoptimumkan kedudukan stop-loss, mengawal kekerapan perdagangan, membezakan antara pasaran trend dan berkisar, dan melaksanakan tahap mengambil keuntungan dinamik untuk mencapai pulangan yang lebih kukuh.


/*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 lanjut