Strategi ini membuat keputusan dagangan berdasarkan trend Histogram MACD. Ia menggunakan trend naik dan turun Histogram untuk menjana isyarat beli dan jual. Apabila Histogram terus naik atau turun untuk tempoh tertentu, isyarat yang sepadan dihasilkan.
Strategi ini menggunakan garis pantas, garis perlahan dan Histogram penunjuk MACD. Pertama mengira EMA pantas dan EMA perlahan. Kemudian tolak EMA perlahan dari EMA pantas untuk mendapatkan MACD, dan tolak Isyarat yang merupakan purata bergerak MACD untuk mendapatkan Histogram.
Apabila Histogram terus meningkat untuk tempoh yang ditetapkan, isyarat beli dihasilkan. Ini menunjukkan bahawa MACD semakin pesat untuk memecahkan garis isyaratnya ke atas, meramalkan bahawa harga mungkin meningkat.
Apabila histogram terus menurun untuk tempoh yang ditetapkan, isyarat jual dihasilkan. Ini menunjukkan bahawa MACD semakin pesat untuk menembusi garis isyaratnya ke bawah, meramalkan bahawa harga mungkin jatuh.
Strategi ini mempunyai kelebihan berikut:
Menggunakan ciri trend histogram MACD, ia boleh menangkap titik perubahan perubahan harga dan meningkatkan keuntungan.
Digabungkan dengan keadaan kenaikan atau kejatuhan histogram berturut-turut, beberapa perdagangan bising boleh disaring untuk mengurangkan kerugian yang tidak perlu.
Membolehkan penyesuaian parameter MACD dan tempoh trend Histogram, ia boleh diselaraskan untuk sesuai dengan produk dan sesi perdagangan yang berbeza.
Logik strategi adalah mudah dan jelas, mudah difahami dan diubah suai, dan juga mudah digabungkan dengan penunjuk atau strategi lain.
Strategi ini juga mempunyai beberapa risiko:
Isyarat yang salah mungkin berlaku apabila harga berayun dalam julat. Penunjuk trend perlu digabungkan untuk menapis.
Selepas histogram naik atau turun, garis MACD mungkin gagal untuk menembusi garis isyarat, tidak dapat keluar dengan menguntungkan. Stop loss harus ditetapkan untuk mengawal risiko.
Kos dagangan dan slippage tidak dipertimbangkan. Keuntungan sebenar mungkin berkurangan dalam perdagangan langsung.
Tetapan parameter yang tidak betul (contohnya tempoh MACD, tempoh trend histogram) boleh memburukkan prestasi strategi. Parameter perlu dioptimumkan untuk produk dan sesi.
Risiko ini boleh dikawal dan dikurangkan melalui kaedah seperti menggabungkan dengan penunjuk trend, menetapkan mekanisme stop loss, mengoptimumkan parameter dll.
Strategi ini boleh dioptimumkan dalam aspek berikut:
Menggabungkan penunjuk lain untuk menentukan arah trend keseluruhan, mengelakkan perdagangan dalam julat berayun.
Tambah mekanisme stop loss. contohnya stop loss apabila MACD mematahkan semula garis isyarat ke bawah.
Mengoptimumkan parameter MACD untuk menyesuaikan produk frekuensi yang berbeza. contohnya memendekkan parameter tempoh untuk data frekuensi tinggi.
Mengoptimumkan tempoh minimum kenaikan atau penurunan histogram berturut-turut, menyeimbangkan kekerapan isyarat dan kebolehpercayaan.
Cuba logik isyarat selepas kegagalan, iaitu isyarat belakang selepas pembalikan histogram.
Gabungkan penunjuk lain seperti penunjuk jumlah atau turun naik untuk mengukur haba pasaran dan isyarat penapis.
Sebagai kesimpulan, strategi Trend Histogram MACD merealisasikan penilaian titik perubahan harga dengan menangkap perubahan trend Histogram. Menggabungkan pengoptimuman parameter dan penunjuk combo dapat menapis isyarat yang salah dengan berkesan. Sebagai alat penilaian tambahan yang penting dalam perdagangan kuantitatif, strategi ini menyediakan idea perdagangan yang mudah dan praktikal 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)