Strategi Dagangan Berbilang Jangka Masa Berdasarkan MACD

Penulis:ChaoZhang, Tarikh: 2024-01-12 11:46:59
Tag:

img

Gambaran keseluruhan: Strategi ini menggunakan penunjuk MACD untuk menjana isyarat dagangan dalam pelbagai bingkai masa untuk mengesan trend.

Prinsip Strategi: Strategi ini menggunakan persilangan antara garis perbezaan MACD dan garis isyarat untuk menentukan arah trend. Khususnya, ia mengira perbezaan MACD dan garis isyarat dalam bingkai masa yang lebih tinggi (default 60min). Apabila garis perbezaan melintasi di atas garis isyarat, isyarat beli dihasilkan. Apabila melintasi di bawah, isyarat jual dihasilkan untuk mengesahkan arah trend keseluruhan.

Strategi kemudian mengira MACD dalam bingkai masa yang lebih rendah (periode semasa) dan memasuki kedudukan apabila persilangan berlaku antara perbezaan dan garis isyarat.

Strategi ini juga menggunakan perubahan warna histogram MACD untuk membantu menilai trend. Bar hijau menunjukkan trend menaik manakala bar merah menunjukkan trend menurun.

Analisis Kelebihan:

  1. Reka bentuk pelbagai jangka masa mengesahkan trend dalam TF yang lebih tinggi dan mencari entri dalam TF yang lebih rendah, meningkatkan sistemasi.

  2. Menggunakan persilangan MACD untuk menentukan kemasukan dan keluar, parameter yang dioptimumkan untuk isyarat yang boleh dipercayai.

  3. Warna histogram membantu menentukan status trend semasa, meningkatkan ketepatan keputusan.

  4. Mengesan trend secara automatik, mengurangkan kesilapan emosi.

Analisis Risiko:

  1. Sebagai penunjuk trend untuk trend jangka sederhana dan panjang, MACD boleh menghasilkan isyarat palsu dalam jangka pendek yang membawa kepada kerugian yang tidak perlu.

  2. Strategi pelbagai jangka masa lebih sukar untuk dioptimumkan dan diuji kerana beberapa tempoh perlu dipertimbangkan secara serentak.

  3. Tiada stop loss ditetapkan yang menimbulkan risiko kerugian besar.

Arahan pengoptimuman:

  1. Mengoptimumkan parameter MACD untuk mencari kombinasi terbaik.

  2. Tambah stop loss untuk hadkan kerugian maksimum.

  3. Kaji penapis lain untuk meningkatkan kualiti isyarat.

  4. Uji kombinasi jangka masa yang berbeza untuk mencari perlawanan yang optimum.

Ringkasan: Strategi ini direka dengan baik secara sistematik dan menggabungkan pelbagai kekuatan penunjuk MACD untuk mengesan trend jangka menengah dan panjang dengan berkesan. Walau bagaimanapun, kekurangan mekanisme stop loss bermakna kerugian jangka pendek dapat dengan mudah berkembang, yang perlu diperbaiki. Secara keseluruhan, dengan keupayaan mengikuti trend yang kuat, strategi ini menyediakan kerangka kerja berkualiti tinggi untuk memilih saham dan membuat keputusan dalam perdagangan kuantitatif. Pengoptimuman lebih lanjut dalam parameter dan model dapat memperluaskan potensi keuntungan dan meningkatkan kestabilan.


/*backtest
start: 2023-12-12 00:00:00
end: 2024-01-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@author : SudeepBisht
//@version=2
strategy(title="SB_CM_MacD_Ult_MTF", shorttitle="SB_CM_Ult_MacD_MTF")
source = close
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above",  defval="60")
smd = input(true, title="Show MacD & Signal Line? Also Turn Off Dots Below")
sd = input(true, title="Show Dots When MacD Crosses Signal Line?")
sh = input(true, title="Show Histogram?")
macd_colorChange = input(true,title="Change MacD Line Color-Signal Line Cross?")
hist_colorChange = input(true,title="MacD Histogram 4 Colors?")

res = useCurrentRes ? timeframe.period : resCustom

fastLength = input(12, minval=1), slowLength=input(26,minval=1)
signalLength=input(9,minval=1)

fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)

macd = fastMA - slowMA
signal = sma(macd, signalLength)
hist = macd - signal

outMacD = request.security(syminfo.tickerid, res, macd)
outSignal = request.security(syminfo.tickerid, res, signal)
outHist = request.security(syminfo.tickerid, res, hist)

histA_IsUp = outHist > outHist[1] and outHist > 0
histA_IsDown = outHist < outHist[1] and outHist > 0
histB_IsDown = outHist < outHist[1] and outHist <= 0
histB_IsUp = outHist > outHist[1] and outHist <= 0

//MacD Color Definitions
macd_IsAbove = outMacD >= outSignal
macd_IsBelow = outMacD < outSignal

plot_color = hist_colorChange ? histA_IsUp ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? lime : red : red
signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime

circleYPosition = outSignal
 
plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=4)
plot(smd and outSignal ? outSignal : na, title="Signal Line", color=signal_color, style=line ,linewidth=2)
plot(sh and outHist ? outHist : na, title="Histogram", color=plot_color, style=histogram, linewidth=4)
plot(sd and cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=circles, linewidth=4, color=macd_color)
// hline(0, '0 Line', linestyle=solid, linewidth=2, color=white)

macd_chk=smd and outMacD ? outMacD : na
checker=smd and outSignal ? outSignal : na
if (crossover(macd_chk,checker))
    strategy.entry("BBandLE", strategy.long, comment="BBandLE")

if (crossunder(macd_chk, checker))
    strategy.entry("BBandSE", strategy.short, comment="BBandSE")


Lebih lanjut