
Strategi ini membuat keputusan perdagangan berdasarkan histogram MACD. Ia menggunakan trend kenaikan dan penurunan histogram untuk menghasilkan isyarat beli dan jual. Ia menghasilkan isyarat yang sesuai apabila histogram naik atau turun secara berturut-turut mencapai tempoh tertentu.
Strategi ini menggunakan garis laju, garis perlahan dan histogram indikator MACD. Pertama, EMA garis laju dikira dan EMA garis perlahan dikira. Kemudian garis laju dikurangkan dari garis perlahan untuk mendapatkan MACD, MACD dikurangkan dari purata bergerak untuk mendapatkan histogram.
Apabila Histogram berlanjutan naik ke atas mencapai kitaran yang ditetapkan, menghasilkan isyarat beli. Ini menunjukkan bahawa MACD sedang mempercepatkan ke atas untuk menembusi garis isyaratnya, meramalkan harga mungkin naik.
Histogram menghasilkan isyarat jual apabila aliran menurun berturut-turut mencapai kitaran yang ditetapkan. Ini menunjukkan bahawa MACD sedang mempercepatkan turun ke bawah dan melanggar garis isyaratnya, yang meramalkan harga mungkin turun.
Strategi ini mempunyai kelebihan berikut:
Dengan menggunakan trend histogram MACD, anda dapat menangkap titik perubahan harga dan meningkatkan peluang keuntungan.
Gabungan dengan keadaan kitaran histogram yang terus meningkat atau menurun, ia boleh menapis sebahagian daripada urus niaga bising dan mengurangkan kerugian yang tidak perlu.
Membolehkan parameter MACD dan kitaran trend Histogram yang boleh disesuaikan untuk menyesuaikan diri dengan varieti dan masa perdagangan yang berbeza.
Logik strategi mudah dan jelas, mudah difahami dan diubah suai, dan mudah digunakan dengan petunjuk atau kombinasi strategi lain.
Strategi ini mempunyai beberapa risiko:
Apabila harga berada di dalam julat goyah, ia mungkin menghasilkan isyarat yang salah dan memerlukan penapisan yang digabungkan dengan penunjuk trend.
Selepas histogram naik atau turun, garis MACD mungkin tidak dapat menembusi garis isyarat, tidak dapat keluar dari keuntungan, dan perlu menetapkan stop loss untuk mengawal risiko.
Tidak mengambil kira kos transaksi dan mata tergelincir, keuntungan dalam masa nyata mungkin berkurangan.
Tetapan parameter (seperti kitaran MACD, kitaran trend Histogram, dan lain-lain) yang tidak betul boleh menyebabkan kesan strategi yang kurang baik, yang memerlukan pengoptimuman untuk varieti dan tempoh.
Risiko ini boleh dikawal dan dikurangkan dengan cara seperti menggabungkannya dengan indikator trend, menetapkan mekanisme stop-loss, dan parameter pengoptimuman.
Strategi ini boleh dioptimumkan dalam beberapa arah:
Menggabungkan dengan petunjuk lain untuk menentukan arah trend secara kasar, mengelakkan perdagangan di kawasan yang bergolak. Sebagai contoh, garis 20 hari untuk menentukan trend garis panjang dan panjang.
Menambah mekanisme hentian kerugian. Sebagai contoh, Hentian kerugian apabila MACD jatuh semula ke saluran isyarat.
Mengoptimumkan parameter MACD, menyesuaikan varieti dengan kitaran yang berbeza. Sebagai contoh, parameter kitaran dapat dipersingkat untuk data frekuensi tinggi.
Mengoptimumkan bilangan minimum kitaran histogram yang terus naik atau turun, mengimbangi kekerapan dan kebolehpercayaan isyarat.
Logik strategi untuk menjejaki isyarat selepas kegagalan percubaan Breakout.
Kombinasi dengan indikator lain, seperti indikator kuantitatif, indikator kadar turun naik dan lain-lain untuk menilai kepanasan pasaran, penapis isyarat.
Strategi Trend Histogram MACD ini menangkap perubahan trend Histogram, untuk membuat keputusan mengenai titik perubahan perubahan harga. Digabungkan dengan pengoptimuman parameter dan penilaian indikator gabungan, ia dapat menghapuskan isyarat yang salah.
/*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)