
Ringkasan: Strategi ini menggunakan penunjuk MACD untuk menghasilkan isyarat perdagangan pada pelbagai bingkai masa untuk mengesan trend. Idea asasnya adalah untuk mengesahkan arah trend pada bingkai masa yang berkala tinggi, kemudian mencari masa masuk tertentu pada bingkai masa yang berkala rendah.
Prinsip-prinsip strategi: Strategi ini menggunakan perbezaan garis MACD dan persilangan garis isyarat untuk menentukan arah trend. Khususnya, ia mengira perbezaan MACD dan garis isyarat pada jangka masa yang tinggi (default 60 minit). Apabila perbezaan di atas garis isyarat menghasilkan isyarat beli ketika melintasi garis isyarat, dan apabila melalui garis isyarat di bawah menghasilkan isyarat jual, untuk mengesahkan arah trend keseluruhan.
Strategi kemudiannya akan mengira MACD pada jangka masa yang rendah ((keadaan semasa) dan memasuki kedudukan yang sesuai apabila garis devian dan garis isyarat bersilang. Oleh itu, jangka masa yang tinggi digunakan untuk menentukan arah trend, dan jangka masa yang rendah digunakan untuk mencari titik masuk tertentu.
Strategi ini juga menggunakan perubahan warna dalam carta berbalut untuk membantu menentukan trend, dengan balut hijau menunjukkan kenaikan dan balut merah menunjukkan penurunan.
Analisis kelebihan:
Reka bentuk bingkai berkala, kitaran tinggi menentukan arah trend, kitaran rendah mencari tempat masuk, sistematik yang baik.
Menggunakan penyambungan penunjuk MACD untuk menentukan masa jual beli, parameter penunjuk telah dioptimumkan, isyarat lebih dipercayai.
Warna carta tiang membantu menilai keadaan trend semasa, membentuk pengesahan berganda, meningkatkan ketepatan keputusan.
Ia berfungsi untuk mengesan trend secara automatik, tidak memerlukan banyak campur tangan manusia, dan mengurangkan kesilapan pertimbangan emosi.
Analisis risiko:
MACD sebagai penunjuk trend jangka panjang dalam jangka masa pendek boleh menghasilkan isyarat yang salah yang menyebabkan kerugian yang tidak perlu.
Strategi bingkai berkala lebih sukar untuk mengoptimumkan parameter dan menguji kerana perlu mempertimbangkan beberapa kitaran pada masa yang sama.
Strategi ini tidak menetapkan stop loss dan boleh menyebabkan kerugian yang lebih besar.
Arah untuk dioptimumkan:
Mengoptimumkan parameter MACD untuk mencari kombinasi parameter yang terbaik.
Meningkatkan mekanisme kawalan kerugian untuk mengehadkan kerugian maksimum
Menilai sama ada perlu untuk menapis isyarat dengan penunjuk lain untuk meningkatkan kualiti isyarat.
Uji kombinasi timeframe yang berbeza untuk mencari kecocokan timeframe optimum.
Kesimpulannya: Strategi ini secara keseluruhan direka dengan sistematik, dan menggabungkan pelbagai kelebihan indikator MACD, dapat mengesan trend garis panjang dengan berkesan. Tetapi, kerana tidak menetapkan stop loss, sukar untuk mengelakkan risiko peningkatan kerugian jangka pendek, ini adalah arah yang perlu dioptimumkan lebih lanjut. Secara keseluruhan, strategi ini dengan keupayaan untuk mengesan trend yang kuat, menyediakan pilihan saham dan kerangka keputusan yang berkualiti tinggi untuk perdagangan kuantitatif.
/*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")