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.
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.
Strategi ini memiliki keuntungan berikut:
Menggunakan karakteristik tren histogram MACD, dapat menangkap titik balik perubahan harga dan meningkatkan profitabilitas.
Dikombinasikan dengan kondisi kenaikan atau penurunan histogram berturut-turut, beberapa perdagangan bising dapat disaring untuk mengurangi kerugian yang tidak perlu.
Memungkinkan penyesuaian parameter MACD dan periode tren histogram, dapat disesuaikan agar sesuai dengan produk dan sesi perdagangan yang berbeda.
Logika strategi sederhana dan jelas, mudah dimengerti dan dimodifikasi, dan juga nyaman untuk dikombinasikan dengan indikator atau strategi lain.
Strategi ini juga memiliki beberapa risiko:
Sinyal yang salah dapat terjadi ketika harga berosilasi dalam kisaran. Indikator tren perlu dikombinasikan untuk menyaring.
Setelah histogram naik atau turun, garis MACD mungkin gagal menembus garis sinyal, tidak dapat keluar dengan menguntungkan. Stop loss harus diatur untuk mengontrol risiko.
Biaya perdagangan dan slippage tidak dipertimbangkan.
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.
Strategi dapat dioptimalkan dalam aspek berikut:
Menggabungkan indikator lain untuk menentukan arah tren secara keseluruhan, menghindari perdagangan dalam kisaran osilasi.
Tambahkan mekanisme stop loss. misalnya stop loss ketika MACD kembali melanggar garis sinyal ke bawah.
Mengoptimalkan parameter MACD agar sesuai dengan produk frekuensi yang berbeda.
Mengoptimalkan periode minimum kenaikan atau penurunan histogram berturut-turut, menyeimbangkan frekuensi sinyal dan keandalan.
Cobalah logika sinyal yang mengikuti setelah kegagalan breakout, yaitu sinyal belakang yang mengikuti setelah pembalikan histogram.
Menggabungkan indikator lain seperti indikator volume atau volatilitas untuk mengukur panas pasar dan sinyal filter.
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)