Strategi ini membuat keputusan dagangan berdasarkan trend histogram MACD

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

img

Ringkasan

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.

Logika Strategi

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.

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan ciri trend histogram MACD, ia boleh menangkap titik perubahan perubahan harga dan meningkatkan keuntungan.

  2. Digabungkan dengan keadaan kenaikan atau kejatuhan histogram berturut-turut, beberapa perdagangan bising boleh disaring untuk mengurangkan kerugian yang tidak perlu.

  3. Membolehkan penyesuaian parameter MACD dan tempoh trend Histogram, ia boleh diselaraskan untuk sesuai dengan produk dan sesi perdagangan yang berbeza.

  4. Logik strategi adalah mudah dan jelas, mudah difahami dan diubah suai, dan juga mudah digabungkan dengan penunjuk atau strategi lain.

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Isyarat yang salah mungkin berlaku apabila harga berayun dalam julat. Penunjuk trend perlu digabungkan untuk menapis.

  2. 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.

  3. Kos dagangan dan slippage tidak dipertimbangkan. Keuntungan sebenar mungkin berkurangan dalam perdagangan langsung.

  4. 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.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Menggabungkan penunjuk lain untuk menentukan arah trend keseluruhan, mengelakkan perdagangan dalam julat berayun.

  2. Tambah mekanisme stop loss. contohnya stop loss apabila MACD mematahkan semula garis isyarat ke bawah.

  3. Mengoptimumkan parameter MACD untuk menyesuaikan produk frekuensi yang berbeza. contohnya memendekkan parameter tempoh untuk data frekuensi tinggi.

  4. Mengoptimumkan tempoh minimum kenaikan atau penurunan histogram berturut-turut, menyeimbangkan kekerapan isyarat dan kebolehpercayaan.

  5. Cuba logik isyarat selepas kegagalan, iaitu isyarat belakang selepas pembalikan histogram.

  6. Gabungkan penunjuk lain seperti penunjuk jumlah atau turun naik untuk mengukur haba pasaran dan isyarat penapis.

Kesimpulan

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)


Lebih lanjut