Strategi Mengikuti Trend dengan 3 EMA, DMI dan MACD

Penulis:ChaoZhang, Tarikh: 2024-01-25 15:48:59
Tag:

img

Ringkasan

Ini adalah strategi trend-mengikuti yang menggabungkan 3 Exponential Moving Averages (EMA) dengan Indeks Pergerakan Arah (DMI) dan penunjuk Moving Average Convergence Divergence (MACD) untuk menentukan arah trend dan menjana isyarat beli / jual. komponen utama termasuk isyarat silang EMA, DMI untuk kekuatan trend, dan MACD untuk pengesahan momentum.

Logika Strategi

Logik teras bergantung kepada 3 EMA - 34, 89, dan 200 - yang dikira pada kerangka masa M5 untuk mengenal pasti trend keseluruhan.

Isyarat beli diaktifkan apabila:

  • Harga penutupan melintasi di atas 34 EMA
  • +DI (pergerakan arah menaik) > 17
  • ADX (kekuatan trend) > -DI

Isyarat jual dihasilkan apabila:

  • Harga penutupan melintasi di bawah 34 EMA
  • -DI (pergerakan arah bearish) > 17
  • ADX > +DI

Pengesahan tambahan datang dari penunjuk MACD sebelum entri.

Kelebihan

Strategi ini mempunyai beberapa kelebihan utama:

  1. Mencatatkan arah trend awal menggunakan crossover EMA jangka pendek
  2. Menggunakan pelbagai EMA untuk mengukur kekuatan trend pada jangka masa yang berbeza
  3. Penapis DMI membantu mengelakkan isyarat palsu dengan memeriksa pergerakan arah yang kuat
  4. MACD memberikan pengesahan momentum untuk persediaan kebarangkalian yang lebih tinggi
  5. Gabungan penunjuk meningkatkan ketepatan dan masa entri

Risiko

Risiko utama yang perlu dipertimbangkan:

  1. Whipsaws dan isyarat palsu jika hanya menggunakan silang EMA
  2. Potensi kelewatan dalam penjanaan isyarat daripada pengesahan berganda
  3. Cacat kepada perubahan trend tiba-tiba

Kaedah pengurangan:

  • Gunakan stop-loss yang sesuai, saiz kedudukan
  • Mengoptimumkan panjang EMA untuk keadaan pasaran semasa
  • Lihat tindakan harga untuk pengesahan visual

Peluang Peningkatan

Penambahbaikan lanjut untuk strategi:

  1. Tambah penapis tambahan seperti RSI untuk tahap overbought / oversold
  2. Masukkan analisis jumlah untuk isyarat yang lebih kuat
  3. Menggunakan pembelajaran mesin untuk terus belajar dari data pasaran baru

Kesimpulan

Ringkasnya, ini adalah sistem trend berikut yang kukuh yang menggabungkan penunjuk mudah tetapi kuat untuk berdagang ke arah trend yang berlaku. konfigurasi EMA tiga kali mengukur trend pelbagai jangka masa sementara pemeriksaan DMI dan MACD meningkatkan masa dan kebarangkalian entri yang menguntungkan. Dengan pengoptimuman dan pengurusan risiko yang betul, ia boleh menjadi tambahan yang berkesan untuk peniaga trend.


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

//@version=5
strategy("2 EMA di+ Buy Sell, strategy ", overlay=true)

// Define the EMA calculation function
ema(src, length) =>
    ta.ema(src, length)

// Calculate and plot EMA on M5
ema34_M5 = ema(close, 34)
ema89_M5 = ema(close, 89)
ema200_M5 = ema(close, 200)

// Plot EMAs
plot(ema34_M5, color=color.green, title="EMA 34 M5", linewidth=2)
plot(ema89_M5, color=color.blue, title="EMA 89 M5", linewidth=2)
plot(ema200_M5, color=color.black, title="EMA 200 M5", linewidth=2)

// Define DMI parameters
len = input(14, title="DI Length")
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, len)
plusDI = 100 * ta.rma(plusDM, len) / trur
minusDI = 100 * ta.rma(minusDM, len) / trur

// Calculate ADX
adxValue = 100 * ta.rma(math.abs(plusDI - minusDI) / (plusDI + minusDI == 0 ? 1 : plusDI + minusDI), len)

// Define MACD parameters
fastLength = input(12, title="Fast Length")
slowLength = input(26, title="Slow Length")
signalLength = input(9, title="Signal Length")

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)

// Create buy/sell conditions
buyCondition = close > ema34_M5 and plusDI > 17 and adxValue > minusDI 
sellCondition = close < ema34_M5 and minusDI > 17 and adxValue > plusDI 

// Strategy logic
strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.entry("Sell", strategy.short, when = sellCondition)

// Create alerts for buy/sell signals
alertcondition(buyCondition, title="Buy Signal", message="Buy Signal")
alertcondition(sellCondition, title="Sell Signal", message="Sell Signal")

// Plot buy/sell arrows on the price chart
bgcolor(buyCondition ? color.new(color.green, 90) : sellCondition ? color.new(color.red, 90) : na)

plotarrow(buyCondition ? 1 : sellCondition ? -1 : na, colorup=color.new(color.green, 0), colordown=color.new(color.red, 0), offset=-1)


Lebih lanjut