Chiến lược giao dịch nhiều khung thời gian dựa trên MACD

Tác giả:ChaoZhang, Ngày: 2024-01-12 11:46:59
Tags:

img

Tổng quan: Chiến lược này sử dụng chỉ số MACD để tạo ra các tín hiệu giao dịch trên nhiều khung thời gian để theo dõi xu hướng. Ý tưởng cốt lõi là xác nhận hướng xu hướng trong khung thời gian cao hơn và sau đó tìm kiếm các cơ hội nhập cảnh cụ thể trong khung thời gian thấp hơn.

Nguyên tắc chiến lược: Chiến lược này sử dụng các giao thoa giữa đường chênh lệch MACD và đường tín hiệu để xác định hướng xu hướng. Cụ thể, nó tính toán đường chênh lệch MACD và đường tín hiệu trong khung thời gian cao hơn (mất 60 phút). Khi đường chênh lệch vượt qua trên đường tín hiệu, một tín hiệu mua được tạo ra. Khi vượt qua bên dưới, một tín hiệu bán được tạo ra để xác nhận hướng xu hướng tổng thể.

Chiến lược sau đó tính toán MACD trong khung thời gian thấp hơn (thời gian hiện tại) và nhập vào các vị trí khi giao thoa xảy ra giữa đường chênh lệch và đường tín hiệu.

Chiến lược này cũng sử dụng sự thay đổi màu sắc của biểu đồ MACD để giúp đánh giá xu hướng.

Phân tích lợi thế:

  1. Thiết kế nhiều khung thời gian xác nhận xu hướng trong TF cao hơn và tìm thấy các mục trong TF thấp hơn, cải thiện hệ thống.

  2. Sử dụng MACD crossover để xác định các bước vào và ra, các thông số tối ưu hóa cho các tín hiệu đáng tin cậy.

  3. Màu histogram giúp xác định tình trạng xu hướng hiện tại, cải thiện độ chính xác quyết định.

  4. Tự động theo dõi xu hướng, giảm lỗi cảm xúc.

Phân tích rủi ro:

  1. Là một chỉ số theo xu hướng cho xu hướng trung bình dài hạn, MACD có thể tạo ra các tín hiệu sai trong ngắn hạn dẫn đến tổn thất không cần thiết.

  2. Các chiến lược nhiều khung thời gian khó tối ưu hóa và kiểm tra hơn vì nhiều khoảng thời gian cần được xem xét đồng thời.

  3. Không có mức dừng lỗ được thiết lập, gây ra rủi ro mất mát lớn.

Hướng dẫn tối ưu hóa:

  1. Tối ưu hóa các thông số MACD để tìm kết hợp tốt nhất.

  2. Thêm stop loss để giới hạn max loss.

  3. Đánh giá các bộ lọc khác để cải thiện chất lượng tín hiệu.

  4. Kiểm tra các kết hợp khung thời gian khác nhau để tìm sự phù hợp tối ưu.

Tóm lại: Chiến lược được thiết kế tốt theo hệ thống và kết hợp nhiều điểm mạnh của chỉ số MACD để theo dõi hiệu quả xu hướng trung dài hạn. Tuy nhiên, thiếu cơ chế dừng lỗ có nghĩa là tổn thất ngắn hạn có thể dễ dàng mở rộng, cần phải được cải thiện. Nhìn chung, với khả năng theo dõi xu hướng mạnh mẽ, chiến lược cung cấp một khuôn khổ chất lượng cao cho việc chọn cổ phiếu và ra quyết định trong giao dịch định lượng. Việc tối ưu hóa thêm các tham số và mô hình có thể mở rộng tiềm năng lợi nhuận và cải thiện sự ổn định.


/*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")


Thêm nữa