Strategi ini membuat keputusan perdagangan berdasarkan tren histogram MACD

Penulis:ChaoZhang, Tanggal: 2024-01-25 14:31:57
Tag:

img

Gambaran umum

Strategi ini membuat keputusan perdagangan berdasarkan tren histogram MACD. Ini memanfaatkan tren naik dan turun histogram untuk menghasilkan sinyal beli dan jual. Ketika histogram terus naik atau turun untuk periode tertentu, sinyal yang sesuai dihasilkan.

Logika Strategi

Strategi ini menggunakan garis cepat, garis lambat dan histogram dari indikator MACD. Pertama menghitung EMA cepat dan EMA lambat. Kemudian mengurangi EMA lambat dari EMA cepat untuk mendapatkan MACD, dan mengurangi Sinyal yang merupakan moving average dari MACD untuk mendapatkan Histogram.

Ketika histogram terus naik untuk periode yang ditetapkan, sinyal beli dihasilkan. Ini menunjukkan bahwa MACD mempercepat untuk menembus garis sinyalnya ke atas, memprediksi bahwa harga mungkin naik.

Ketika histogram terus menurun untuk periode yang ditetapkan, sinyal jual dihasilkan. Ini menunjukkan bahwa MACD mempercepat untuk menembus garis sinyalnya ke bawah, memprediksi bahwa harga mungkin turun.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Menggunakan karakteristik tren histogram MACD, dapat menangkap titik balik perubahan harga dan meningkatkan profitabilitas.

  2. Dikombinasikan dengan kondisi kenaikan atau penurunan histogram berturut-turut, beberapa perdagangan bising dapat disaring untuk mengurangi kerugian yang tidak perlu.

  3. Memungkinkan penyesuaian parameter MACD dan periode tren histogram, dapat disesuaikan agar sesuai dengan produk dan sesi perdagangan yang berbeda.

  4. Logika strategi sederhana dan jelas, mudah dimengerti dan dimodifikasi, dan juga nyaman untuk dikombinasikan dengan indikator atau strategi lain.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Sinyal yang salah dapat terjadi ketika harga berosilasi dalam kisaran. Indikator tren perlu dikombinasikan untuk menyaring.

  2. Setelah histogram naik atau turun, garis MACD mungkin gagal menembus garis sinyal, tidak dapat keluar dengan menguntungkan. Stop loss harus diatur untuk mengontrol risiko.

  3. Biaya perdagangan dan slippage tidak dipertimbangkan.

  4. Pengaturan parameter yang tidak tepat (misalnya periode MACD, periode tren histogram) dapat memperburuk kinerja strategi. Parameter perlu dioptimalkan untuk produk dan sesi.

Risiko ini dapat dikendalikan dan dikurangi melalui metode seperti menggabungkan dengan indikator tren, mengatur mekanisme stop loss, mengoptimalkan parameter dll.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Menggabungkan indikator lain untuk menentukan arah tren secara keseluruhan, menghindari perdagangan dalam kisaran osilasi.

  2. Tambahkan mekanisme stop loss. misalnya stop loss ketika MACD kembali melanggar garis sinyal ke bawah.

  3. Mengoptimalkan parameter MACD agar sesuai dengan produk frekuensi yang berbeda.

  4. Mengoptimalkan periode minimum kenaikan atau penurunan histogram berturut-turut, menyeimbangkan frekuensi sinyal dan keandalan.

  5. Cobalah logika sinyal yang mengikuti setelah kegagalan breakout, yaitu sinyal belakang yang mengikuti setelah pembalikan histogram.

  6. Menggabungkan indikator lain seperti indikator volume atau volatilitas untuk mengukur panas pasar dan sinyal filter.

Kesimpulan

Sebagai kesimpulan, strategi Tren Histogram MACD mewujudkan penilaian titik balik perubahan harga dengan menangkap perubahan tren Histogram. Menggabungkan optimasi parameter dan indikator combo dapat secara efektif menyaring sinyal yang salah. Sebagai alat penilaian tambahan yang penting dalam perdagangan kuantitatif, strategi ini memberikan ide perdagangan yang sederhana dan praktis menggunakan Histogram MACD.


/*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=4
//study(title="Histogram Strategy by Sedkur", shorttitle="Histogram Strategy by Sedkur")
strategy (title="Histogram Trends Strategy by Sedkur", shorttitle="Histogram Trends Strategy by Sedkur")


/// Getting inputs
dyear = input(title="Year", type=input.integer, defval=2017, minval=1950, maxval=2500)
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
hist_length = input(title="Trend of Histogram Number", type=input.integer, defval=1, minval=1, maxval=100)
//buyh = input(title="Buy histogram value", type=input.float, defval=0.0, minval=-1000, maxval=1000, step=0.1)
//sellh = input(title="Sell histogram value", type=input.float, defval=0.0, minval=-1000, maxval=1000, step=0.1)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

/// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
//plot(macd, title="MACD", color=col_macd, transp=0)
//plot(signal, title="Signal", color=col_signal, transp=0)

//bullish = hist[1] <= hist and buyh<=hist?true:false
//bearish = hist[1] >= hist and sellh>=hist?true:false
bull=0
bear=0


for i=0 to hist_length
    if (hist[i+1] <= hist[i])
        bull:=bull+1
bullish = bull==hist_length+1?true:false   

for j=0 to hist_length
    if (hist[j+1] >= hist[j])
        bear:=bear+1
bearish = bear==hist_length+1?true:false 



//bullish = hist[1] <= hist and hist[2] <= hist and hist[3] <= hist and hist[4] <= hist and hist[5] <= hist?true:false
//bearish = hist[1] >= hist and hist[2] >= hist and hist[3] >= hist and hist[4] >= hist and hist[5] >= hist?true:false

strategy.entry("buy", strategy.long, comment="buy", when = bullish and year>=dyear)
strategy.entry("sell", strategy.short, comment="sell", when = bearish and year>=dyear)


Lebih banyak