Strategi pelacakan tren skala multi-waktu berdasarkan MACD impuls dan persilangan rata-rata pergerakan ganda

MACD SMMA SMA ZLEMA EMA MA
Tanggal Pembuatan: 2024-05-17 15:33:02 Akhirnya memodifikasi: 2024-05-17 15:33:02
menyalin: 5 Jumlah klik: 1201
1
fokus pada
1617
Pengikut

Strategi pelacakan tren skala multi-waktu berdasarkan MACD impuls dan persilangan rata-rata pergerakan ganda

Ringkasan

Strategi ini menggunakan beberapa indikator moving average, termasuk SMMA, SMA, ZLEMA, dan EMA, dan berdasarkan mereka membangun indikator MACD yang lebih baik (Impulse MACD), untuk menghasilkan sinyal perdagangan melalui persilangan Impulse MACD dengan garis sinyalnya. Gagasan utama strategi ini adalah menggunakan moving averages pada skala waktu yang berbeda untuk menangkap tren pasar, sambil menggunakan Impulse MACD untuk mengkonfirmasi kekuatan dan arah tren.

Prinsip Strategi

  1. SMMA, ZLEMA, dengan durasi tinggi 34, harga rendah, harga tutup, diperoleh dari Impulse MACD ((MD) ).
  2. Hitung SMA 9 periode dari Impulse MACD sebagai garis sinyal ((SB) ).
  3. Perhitungan diferensial antara Impulse MACD dan garis sinyal ((SH), yang mencerminkan kekuatan tren.
  4. Ketika Impulse MACD melintasi garis sinyal, sinyal beli dihasilkan, dan saat melintasi garis sinyal, posisi kosong dibuat.
  5. Berdasarkan hubungan antara harga dengan Impulse MACD, harga tinggi dan rendah SMMA, gambar pilar Impulse MACD dengan warna yang berbeda untuk mencerminkan kekuatan dan kelemahan tren secara intuitif.

Keunggulan Strategis

  1. Penggunaan berbagai jenis rata-rata bergerak untuk mencerminkan tren pasar secara lebih komprehensif.
  2. Indikator MACD yang ditingkatkan (Impulse MACD) mempertimbangkan posisi harga relatif terhadap rata-rata bergerak, sehingga dapat lebih mencerminkan kekuatan tren.
  3. Pengenalan kabel sinyal membantu memfilter beberapa sinyal palsu dan meningkatkan kualitas sinyal.
  4. Impulse MACD dipetakan dengan warna yang berbeda berdasarkan intensitas tren, sehingga mudah untuk menilai pergerakan pasar secara intuitif.

Risiko Strategis

  1. Pemilihan parameter yang tidak tepat dapat menyebabkan sinyal yang sering atau lambat, yang perlu dioptimalkan sesuai dengan pasar dan siklus yang berbeda.
  2. Strategi ini dapat menghasilkan lebih banyak sinyal palsu dan menyebabkan kerugian pada saat terjadi gempa.
  3. Strategi ini tidak memiliki mekanisme stop loss, dan kemungkinan besar akan mengalami penarikan besar jika terjadi situasi yang ekstrem.

Arah optimasi strategi

  1. Menggunakan indikator penilaian tren seperti ADX dan lain-lain untuk memperlambat perdagangan saat tren jelas, mengurangi kerugian dalam situasi yang bergolak.
  2. Untuk sinyal perdagangan yang dihasilkan, dapat dikombinasikan dengan indikator lain seperti RSI, ATR dan lain-lain untuk melakukan konfirmasi kedua, meningkatkan kualitas sinyal.
  3. Tetapkan stop loss dan stop loss yang masuk akal untuk mengendalikan risiko transaksi tunggal.
  4. Optimalisasi parameter, seperti mencari kombinasi parameter yang optimal dengan menggunakan algoritma genetik.

Meringkaskan

Strategi ini didasarkan pada berbagai jenis rata-rata bergerak membangun MACD indikator yang ditingkatkan dan menggunakan sinyal yang bersilang dengan sinyal untuk menghasilkan sinyal perdagangan, sementara secara intuitif menunjukkan kekuatan tren, keseluruhan ide yang jelas, keunggulan yang jelas. Namun, strategi ini juga memiliki beberapa keterbatasan, seperti kurangnya adaptasi terhadap kondisi getaran, kurangnya langkah-langkah pengendalian angin, dll.

Kode 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")