Strategi penjejakan arah aliran skala berbilang masa berdasarkan MACD impuls dan persilangan purata bergerak berganda

MACD SMMA SMA ZLEMA EMA MA
Tarikh penciptaan: 2024-05-17 15:33:02 Akhirnya diubah suai: 2024-05-17 15:33:02
Salin: 5 Bilangan klik: 1201
1
fokus pada
1617
Pengikut

Strategi penjejakan arah aliran skala berbilang masa berdasarkan MACD impuls dan persilangan purata bergerak berganda

Gambaran keseluruhan

Strategi ini menggunakan pelbagai petunjuk purata bergerak, termasuk SMMA, SMA, ZLEMA dan EMA, dan berdasarkan mereka membina petunjuk MACD yang lebih baik (Impulse MACD), menghasilkan isyarat perdagangan melalui persilangan Impulse MACD dengan garis isyaratnya. Gagasan utama strategi ini adalah menggunakan purata bergerak pada skala masa yang berbeza untuk menangkap trend pasaran, sambil menggunakan Impulse MACD untuk mengesahkan kekuatan dan arah trend.

Prinsip Strategi

  1. SMMA, ZLEMA, yang dikira dengan panjang 34 harga tinggi, rendah, harga tutup, diperoleh oleh Impulse MACD ((MD)
  2. Hitung 9 kitaran SMA Impulse MACD sebagai garisan isyarat ((SB) }}.
  3. Hitung perbezaan Impulse MACD dengan garis isyarat ((SH), yang mencerminkan kekuatan trend。
  4. Apabila Impulse MACD melintasi garis isyarat, ia menghasilkan isyarat beli dan melintasi isyarat kosong.
  5. Berdasarkan hubungan harga dengan Impulse MACD, harga tinggi dan rendah SMMA, grafik tiang Impulse MACD digambar dengan warna yang berbeza, secara intuitif mencerminkan kekuatan trend.

Kelebihan Strategik

  1. Penggunaan pelbagai jenis purata bergerak untuk mencerminkan trend pasaran secara lebih menyeluruh.
  2. Penunjuk MACD yang lebih baik (Impulse MACD) mengambil kira kedudukan harga berbanding purata bergerak, dan dapat mencerminkan kekuatan trend dengan lebih baik.
  3. Pengenalan saluran isyarat membantu menyaring beberapa isyarat palsu dan meningkatkan kualiti isyarat.
  4. Impulse MACD diwarnakan dengan warna yang berbeza mengikut kekuatan trend, untuk memudahkan anda menilai pergerakan pasaran secara intuitif.

Risiko Strategik

  1. Pemilihan parameter yang tidak betul boleh menyebabkan isyarat yang kerap atau terlewat, yang perlu dioptimumkan mengikut pasaran dan kitaran yang berbeza.
  2. Strategi ini mungkin menghasilkan lebih banyak isyarat palsu dan menyebabkan kerugian dalam keadaan gegaran.
  3. Strategi ini tidak mempunyai mekanisme stop loss, yang boleh menyebabkan penarikan balik yang lebih besar dalam situasi yang teruk.

Arah pengoptimuman strategi

  1. Memperkenalkan indikator penilaian trend, seperti ADX dan lain-lain, untuk berdagang hanya apabila trend jelas, mengurangkan kerugian dalam keadaan gegaran.
  2. Untuk isyarat perdagangan yang dihasilkan, ia boleh digabungkan dengan penunjuk lain seperti RSI, ATR dan lain-lain untuk pengesahan kedua, meningkatkan kualiti isyarat.
  3. Tetapkan stop loss dan stop position yang munasabah untuk mengawal risiko transaksi tunggal.
  4. Pengoptimuman parameter, seperti mencari kombinasi parameter yang optimum dengan menggunakan algoritma genetik dan sebagainya.

ringkaskan

Strategi ini membina penunjuk MACD yang diperbaiki berdasarkan pelbagai jenis rata-rata bergerak, dan menghasilkan isyarat perdagangan dengan persilangan dengan garis isyarat, sambil menunjukkan kekuatan trend secara visual, pemikiran keseluruhan jelas, kelebihan jelas. Tetapi strategi ini juga mempunyai beberapa batasan, seperti kekurangan adaptasi terhadap keadaan gegaran, kekurangan langkah-langkah kawalan angin, dan lain-lain.

Kod sumber strategi
/*backtest
start: 2023-05-11 00:00:00
end: 2024-05-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Impulse MACD Strategy [LazyBear]", shorttitle="IMACD_Strategy", overlay=false)

// Function to calculate SMMA
calc_smma(src, len) =>
    var float smma = na
    smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
    smma

// Function to calculate SMA
	ta.sma(src, len)
    sum = 0.0
    for i = 0 to len - 1
        sum := sum + src[i]
    sum / len

// Function to calculate ZLEMA
calc_zlema(src, length) =>
    var float ema1 = na
    var float ema2 = na
    var float d = na
    ema1 := ta.ema(src, length)
    ema2 := ta.ema(ema1, length)
    d := ema1 - ema2
    ema1 + d

// Function to calculate EMA
calc_ema(src, len) =>
    ema = 0.0
    ema := ta.ema(src, len)
    ema

// Inputs
lengthMA = input(34, title="Length of Moving Average")
lengthSignal = input(9, title="Length of Signal Line")

// Calculations
src = hlc3
hi = calc_smma(high, lengthMA)
lo = calc_smma(low, lengthMA)
mi = calc_zlema(src, lengthMA) 

md = mi > hi ? (mi - hi) : mi < lo ? (mi - lo) : 0
sb = ta.sma(md, lengthSignal)
sh = md - sb
mdc = src > mi ? src > hi ? color.lime : color.green : src < lo ? color.red : color.orange

// Plotting
plot(0, color=color.gray, linewidth=1, title="MidLine")
plot(md, color=mdc, linewidth=2, title="ImpulseMACD", style=plot.style_histogram)
plot(sh, color=color.blue, linewidth=2, title="ImpulseHisto", style=plot.style_histogram)
plot(sb, color=color.maroon, linewidth=2, title="ImpulseMACDCDSignal")

// Execute trades based on signals
if (ta.crossover(md, sb))
    strategy.entry("Buy", strategy.long)
if (ta.crossunder(md, sb))
    strategy.close("Buy")