Strategi Perdagangan MACD Double Conversion Zero Lag - Perdagangan Frekuensi Tinggi Berdasarkan Penangkapan Tren Jangka Pendek

MACD EMA SMA
Tanggal Pembuatan: 2024-05-24 18:14:37 Akhirnya memodifikasi: 2024-05-24 18:14:37
menyalin: 0 Jumlah klik: 1177
1
fokus pada
1617
Pengikut

Strategi Perdagangan MACD Double Conversion Zero Lag - Perdagangan Frekuensi Tinggi Berdasarkan Penangkapan Tren Jangka Pendek

Ringkasan

Strategi ini didasarkan pada MACD (Moving Average Convergence Line) yang merupakan versi tanpa lag dari indikator MACD. Strategi ini menggunakan dua periode berbeda untuk membangun indikator MACD (moving averages, yaitu garis cepat dan garis lambat). Strategi ini menggunakan algoritma tanpa lag untuk menghilangkan lag dari indikator dan harga dan meningkatkan waktu sinyal.

Prinsip Strategi

  1. Hitung EMA (Indeks Moving Average) atau SMA (Simple Moving Average) dari garis cepat (default 12 cycle) dan garis lambat (default 26 cycle).
  2. Dengan menggunakan algoritma nol lag, garis cepat dan lambat diratakan dua kali, menghilangkan keterlambatan indikator dan harga.
  3. Garis MACD terdiri dari perbedaan antara garis cepat dengan garis lambat.
  4. Garis sinyal terdiri dari EMA ((default 9 cycle) atau SMA dari garis MACD.
  5. Garis MACD terdiri dari perbedaan antara garis MACD dan garis sinyal, dengan warna biru untuk nilai positif dan merah untuk nilai negatif.
  6. Ketika garis MACD melintasi garis sinyal dari bawah ke atas, dan titik melintasi berada di bawah sumbu nol, menghasilkan sinyal beli (titik biru).
  7. Ketika garis MACD melintasi garis sinyal dari atas ke bawah, dan titik melintasi berada di atas sumbu nol, menghasilkan sinyal jual (titik merah).
  8. Strategi untuk memesan secara otomatis berdasarkan sinyal jual beli dan memicu alarm yang sesuai.

Analisis Keunggulan

  1. Algoritma nol lag secara efektif menghilangkan keterlambatan indikator dan harga, meningkatkan waktu dan akurasi sinyal.
  2. Desain rata-rata bergerak ganda dapat menangkap tren pasar dengan lebih baik dan beradaptasi dengan lingkungan pasar yang berbeda.
  3. Diagram MACD secara intuitif mencerminkan kontras kekuatan di atas rata-rata, membantu keputusan perdagangan.
  4. Fitur pesanan otomatis dan peringatan memudahkan pedagang untuk menangkap peluang perdagangan tepat waktu dan meningkatkan efisiensi perdagangan.

Analisis risiko

  1. Dalam pasar yang bergejolak, sinyal silang yang sering terjadi dapat menyebabkan overtrading dan kerugian.
  2. Setting parameter yang tidak tepat dapat menyebabkan sinyal terdistorsi dan mempengaruhi kinerja strategi.
  3. Strategi ini mengandalkan data historis untuk perhitungan, dan kurang beradaptasi dengan insiden-insiden yang tidak terduga dan insiden-insiden Black Swan.

Arah optimasi

  1. Menggunakan indikator pengesahan tren seperti ADX untuk memfilter sinyal palsu dari pasar yang bergoyang.
  2. Optimalkan parameter untuk menemukan kombinasi optimal dari siklus garis cepat dan siklus garis sinyal, meningkatkan stabilitas strategi.
  3. Menggabungkan indikator teknis atau faktor fundamental lainnya, membangun model multi-faktor untuk meningkatkan risiko dan keuntungan dari strategi.
  4. Memperkenalkan mekanisme stop loss dan stop loss untuk mengontrol risiko transaksi tunggal.

Meringkaskan

Strategi perdagangan MACD dengan konversi nol lag dengan merespons perubahan harga dengan cepat, menangkap tren jangka pendek, dan memungkinkan perdagangan frekuensi tinggi. Algoritma nol lag dan desain rata-rata bergerak ganda meningkatkan waktu dan akurasi sinyal. Strategi ini memiliki keuntungan tertentu, seperti intuisi sinyal, kemudahan operasi, dll, tetapi juga ada risiko overtrading, parameter sensitif, dll.

Kode Sumber Strategi
/*backtest
start: 2024-04-23 00:00:00
end: 2024-05-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("BNM INTRADAY SETUP MACD 3M - Version 1.2", shorttitle="Zero Lag MACD Enhanced 1.2")
source = close

fastLength = input(12, title="Fast MM period", minval=1)
slowLength = input(26,title="Slow MM period", minval=1)
signalLength =input(9,title="Signal MM period", minval=1)
useEma = input(true, title="Use EMA (otherwise SMA)")
useOldAlgo = input(false, title="Use Glaz algo (otherwise 'real' original zero lag)")
showDots = input(true, title="Show symbols to indicate crossing")
dotsDistance = input(1.5, title="Symbols distance factor", minval=0.1)

// Fast line
ma1 = useEma ? ema(source, fastLength) : sma(source, fastLength) 
ma2 = useEma ? ema(ma1, fastLength) : sma(ma1, fastLength) 
zerolagEMA = ((2 * ma1) - ma2)

// Slow line
mas1 = useEma ? ema(source, slowLength) : sma(source, slowLength)
mas2 = useEma ? ema(mas1, slowLength) : sma(mas1, slowLength)
zerolagslowMA = ((2 * mas1) - mas2)

// MACD line
ZeroLagMACD = zerolagEMA - zerolagslowMA 

// Signal line
emasig1 = ema(ZeroLagMACD, signalLength)
emasig2 = ema(emasig1, signalLength)
signal = useOldAlgo ? sma(ZeroLagMACD, signalLength) : (2 * emasig1) - emasig2

hist = ZeroLagMACD - signal

upHist = (hist > 0) ? hist : 0
downHist = (hist <= 0) ? hist : 0

p1 = plot(upHist, color=color.blue, transp=40, style=plot.style_columns, title='Positive delta')
p2 = plot(downHist, color=color.red, transp=40, style=plot.style_columns, title='Negative delta') 

zeroLine = plot(ZeroLagMACD, color=color.red, transp=0, linewidth=2, title='MACD line')
signalLine = plot(signal, color=color.blue, transp=0, linewidth=2, title='Signal')

ribbonDiff = hist > 0 ? color.blue : color.red
fill(zeroLine, signalLine, color=ribbonDiff)

circleYPosition = signal * dotsDistance
ribbonDiff2 = hist > 0 ? color.blue : color.red

// Generate dots for cross signals
plot(showDots and cross(ZeroLagMACD, signal) ? circleYPosition : na, style=plot.style_circles, linewidth=4, color=ribbonDiff2, title='Dots')

// Alerts for buy and sell signals
buySignal = cross(ZeroLagMACD, signal) and (ribbonDiff2 == color.blue) and (ZeroLagMACD < 0)
sellSignal = cross(ZeroLagMACD, signal) and (ribbonDiff2 == color.red) and (ZeroLagMACD > 0)

// Use 'strategy.entry' for placing orders in strategy context
if (buySignal)
    strategy.entry("Buy", strategy.long)
    alert("Buy Signal: Blue dot below zero line", alert.freq_once_per_bar_close)

if (sellSignal)
    strategy.entry("Sell", strategy.short)
    alert("Sell Signal: Red dot above zero line", alert.freq_once_per_bar_close)