Strategi kegigihan crossover MACD zon berbilang masa digabungkan dengan penapis arah aliran EMA

MACD EMA
Tarikh penciptaan: 2025-02-21 10:11:34 Akhirnya diubah suai: 2025-02-27 17:17:57
Salin: 1 Bilangan klik: 366
2
fokus pada
319
Pengikut

Strategi kegigihan crossover MACD zon berbilang masa digabungkan dengan penapis arah aliran EMA Strategi kegigihan crossover MACD zon berbilang masa digabungkan dengan penapis arah aliran EMA

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan multi-zon berdasarkan indikator MACD dan purata bergerak. Ia menggabungkan indikator MACD dengan dua tempoh masa 1 minit dan 3 minit, sambil menggunakan 200 kitaran EMA sebagai penapis trend, untuk berdagang dengan menangkap kesinambungan trend pasaran.

Prinsip Strategi

Logik teras strategi adalah berdasarkan elemen utama berikut:

  1. Penunjuk MACD menggunakan dua tempoh masa 1 minit dan 3 minit untuk mengesahkan trend yang berterusan
  2. Berdasarkan EMA 200 sebagai trend utama
  3. Menapis isyarat dagangan dengan harga dan kedudukan rata-rata
  4. Berdagang berdasarkan penapis pada masa perdagangan

Peraturan penjanaan isyarat dagangan khusus adalah seperti berikut:

  • Isyarat berbilang arah: Garis MACD berada di atas garis sifar dan melintasi garis isyarat ke atas, sementara 3 minit MACD mengesahkan trend, harga di atas EMA200
  • Isyarat kosong: Garis MACD di bawah garis sifar dan ke bawah melintasi garis isyarat, sementara 3 minit MACD mengesahkan trend, harga di bawah EMA200

Kelebihan Strategik

  1. Pengesahan tempoh masa berganda meningkatkan ketepatan transaksi
  2. Penapis trend dikombinasikan untuk mengurangkan isyarat palsu
  3. Mengandungi mekanisme kawalan risiko yang baik
  4. Menggunakan penapis masa untuk mengelakkan dagangan pada masa yang tidak aktif
  5. Pembaikan mata dasar yang dinamik melindungi keuntungan yang telah diperoleh
  6. Logik strategi yang jelas untuk penyesuaian dan pengoptimuman

Risiko Strategik

  1. Kemungkinan risiko tergelincir dalam pasaran yang bergolak
  2. Membolehkan beberapa peluang perdagangan terlepas
  3. Titik hentian tetap mungkin tidak fleksibel dalam keadaan pasaran tertentu
  4. Kesan kos urus niaga ke atas pulangan strategi perlu dipertimbangkan
  5. Kemungkinan untuk menarik balik lebih besar dalam pasaran yang bergolak

Cadangan kawalan risiko:

  • Jarak hentian yang disesuaikan dengan turun naik pasaran
  • Pertimbangkan untuk meningkatkan sasaran keuntungan untuk memastikan keuntungan
  • Penangguhan perdagangan semasa data ekonomi penting diumumkan
  • Penilaian dan penyesuaian parameter strategi

Arah pengoptimuman strategi

  1. Parameter MACD penyesuaian dinamik:
  • Penyesuaian mengikut turun naik pasaran
  • Pertimbangkan untuk menggunakan purata bergerak adaptif
  1. Menambah penapis masa:
  • Pembahagian masa transaksi yang lebih halus
  • Analisis kuantiti gabungan untuk mengoptimumkan masa dagangan
  1. Mekanisme henti kerugian yang dioptimumkan:
  • Memperkenalkan Hentikan Kerosakan Dinamik
  • Jarak hentian berdasarkan tetapan ATR
  1. Penapis trend:
  • Tambah lebih banyak pengesahan petunjuk teknikal
  • Pertimbangkan untuk memperkenalkan analisis tingkah laku harga

ringkaskan

Strategi ini membina sistem perdagangan yang agak sempurna dengan menggabungkan indikator MACD berkala dan penapis trend EMA. Kelebihannya terletak pada integriti mekanisme pengesahan berganda dan pengurusan risiko, tetapi juga perlu memperhatikan masalah kesesuaian dalam keadaan pasaran yang berbeza. Dengan arah pengoptimuman yang disyorkan, strategi ini dijangka meningkatkan kemampuan keuntungan lebih lanjut sambil mengekalkan kestabilan.

Kod sumber strategi
/*backtest
start: 2025-02-13 00:00:00
end: 2025-02-15 02:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("NQ MACD Continuation Backtest", overlay=true)

// MACD Settings
fastLength = 12
slowLength = 26
signalLength = 9

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

// 3-minute MACD for trend filter
[htfMacd, htfSignal, _] = request.security(syminfo.tickerid, "3", ta.macd(close, fastLength, slowLength, signalLength), lookahead=barmerge.lookahead_on)

// 200 EMA
ema200 = ta.ema(close, 200)

// Time Filters
inSession = (hour(time, "America/New_York") >= 9 and (hour(time, "America/New_York") > 9 or minute(time, "America/New_York") >= 45)) and (hour(time, "America/New_York") < 22 or (hour(time, "America/New_York") == 22 and minute(time, "America/New_York") == 30))
notRestricted = (hour(time, "America/New_York") >= 6 and hour(time, "America/New_York") < 22)

// Track Previous MACD Crosses
var bool bullishCrossed = false
var bool bearishCrossed = false
if (ta.crossover(macdLine, signalLine) and macdLine > 0)
    bullishCrossed := true
if (ta.crossunder(macdLine, signalLine) and macdLine < 0)
    bearishCrossed := true

// Define Continuation Signals with EMA and 3-Min MACD Filter
bullishContinuation = (ta.crossover(macdLine, signalLine) and macdLine > 0 and signalLine > 0 and htfMacd > htfSignal and bullishCrossed and close > ema200)
bearishContinuation = (ta.crossunder(macdLine, signalLine) and macdLine < 0 and signalLine < 0 and htfMacd < htfSignal and bearishCrossed and close < ema200)

// Entry Conditions with SL and 10 Contracts
if (bullishContinuation and inSession and notRestricted)
    strategy.entry("Long", strategy.long, qty=10, stop=close - 7 * syminfo.mintick)
if (bearishContinuation and inSession and notRestricted)
    strategy.entry("Short", strategy.short, qty=10, stop=close + 7 * syminfo.mintick)

// Break-Even Adjustment
if (strategy.position_size > 0 and close >= strategy.position_avg_price + 5 * syminfo.mintick)
    strategy.exit("BreakEvenLong", from_entry="Long", stop=strategy.position_avg_price)
if (strategy.position_size < 0 and close <= strategy.position_avg_price - 5 * syminfo.mintick)
    strategy.exit("BreakEvenShort", from_entry="Short", stop=strategy.position_avg_price)

// Display Indicators on Chart
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.orange, title="Signal Line")
plot(ema200, color=color.red, title="200 EMA")