
Strategi ini membuat keputusan perdagangan berdasarkan histogram dari indikator MACD. Strategi ini menggunakan tren naik dan tren turun histogram untuk menghasilkan sinyal beli dan jual. Setelah histogram naik atau turun secara berturut-turut mencapai periode tertentu, sinyal yang sesuai dihasilkan.
Strategi ini menggunakan indikator MACD dengan garis cepat, garis lambat dan histogram. Pertama, hitung EMA garis cepat dan EMA garis lambat. Kemudian, garis cepat dikurangi dengan garis lambat untuk mendapatkan MACD, MACD dikurangi dengan rata-rata bergerak untuk mendapatkan histogram.
Ketika Histogram berlanjut ke atas dan mencapai periode yang ditetapkan, sinyal beli dihasilkan. Ini menunjukkan bahwa MACD sedang mempercepat ke atas untuk menembus garis sinyalnya dan memprediksi bahwa harga mungkin akan naik.
Ketika histogram berlanjut ke arah penurunan dan mencapai periode yang ditetapkan, maka akan muncul sinyal jual. Ini berarti MACD sedang mempercepat turunnya ke bawah dan memprediksi bahwa harga mungkin akan turun.
Strategi ini memiliki keuntungan sebagai berikut:
Menggunakan tren histogram MACD untuk menangkap titik balik dari perubahan harga dan meningkatkan probabilitas keuntungan.
Kombinasi dengan kondisi histogram yang berputar naik atau turun secara berurutan, dapat memfilter sebagian dari transaksi noise dan mengurangi kerugian yang tidak perlu.
Memungkinkan untuk menyesuaikan parameter MACD dan siklus tren histogram, yang dapat disesuaikan untuk menyesuaikan dengan varietas dan periode perdagangan yang berbeda.
Logika strategi sederhana dan jelas, mudah dipahami dan dimodifikasi, dan mudah digunakan dengan indikator atau kombinasi strategi lainnya.
Strategi ini juga memiliki beberapa risiko:
Ketika harga berada di zona getaran, sinyal yang salah dapat dihasilkan dan perlu digabungkan dengan indikator tren dan filter lainnya.
Setelah histogram naik atau turun, garis MACD mungkin tidak dapat menembus garis sinyal, tidak dapat keluar dari keuntungan, dan perlu mengatur stop loss untuk mengendalikan risiko.
Tidak mempertimbangkan biaya transaksi dan slippage, keuntungan real-time mungkin akan berkurang.
Pengaturan parameter yang tidak tepat (seperti siklus MACD, siklus tren histogram, dll.) dapat menyebabkan efek strategi yang buruk, yang perlu dioptimalkan untuk varietas dan periode.
Risiko ini dapat dikontrol dan dikurangi dengan kombinasi indikator tren, pengaturan mekanisme stop loss, parameter optimasi dan lainnya.
Strategi ini dapat dioptimalkan dari beberapa arah:
Kombinasi dengan indikator lain untuk menentukan arah tren secara umum, menghindari zona perdagangan yang bergoyang. Misalnya, garis 20 untuk menentukan tren garis tengah dan panjang.
Menambahkan mekanisme stop loss. Misalnya MACD stop loss ketika jatuh kembali dari jalur sinyal.
Optimalkan parameter MACD untuk varietas yang berbeda siklus. Misalnya, parameter siklus dapat dipersingkat untuk data frekuensi tinggi.
Mengoptimalkan histogram dengan jumlah siklus minimal yang terus naik atau turun, menyeimbangkan frekuensi sinyal dengan keandalan.
Logika strategi untuk melacak sinyal setelah mencoba Breakout gagal.
Kombinasi dengan indikator lain, seperti indikator energi kuantitatif, indikator volatilitas, dan lain-lain untuk menilai panas pasar, filter sinyal.
Strategi MACD Histogram Trend ini memungkinkan penilaian terhadap titik balik perubahan harga dengan menangkap perubahan tren Histogram. Dengan kombinasi optimasi parameter dan penilaian indikator kombinasi, dapat secara efektif menyingkirkan sinyal yang salah. Sebagai alat penilaian tambahan yang sangat penting dalam perdagangan kuantitatif, strategi MACD Histogram memberikan pemikiran perdagangan yang sederhana dan praktis.
/*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)