
Chiến lược giao dịch chéo phân phối MACD hình thành MACD bằng cách tính toán chênh lệch giữa đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm, sau đó tính toán đường phân phối của đường trung bình di chuyển MACD, tạo ra tín hiệu giao dịch khi MACD đi qua hoặc đi qua đường phân phối. Chiến lược này kết hợp với tư duy cân bằng hai đường và nắm bắt các bước ngoặt trong xu hướng trung hạn của giá cổ phiếu.
Chiến lược này đầu tiên tính toán các đường trung bình di chuyển nhanh (fastMA) và đường trung bình di chuyển chậm (slowMA). Các tham số của đường trung bình di chuyển nhanh là 12 ngày và đường trung bình di chuyển chậm là 26 ngày. Sau đó tính toán chênh lệch giữa hai đường trung bình di chuyển để tạo ra MACD.
Lợi thế của chiến lược là nắm bắt các điểm biến của xu hướng trung bình của giá cổ phiếu. Sự kết hợp đường trung bình nhanh và chậm sẽ lọc ra tiếng ồn của biến động giá ngắn hạn, có thể nắm bắt xu hướng giá trung bình. MACD sẽ phá vỡ đường phân phối khi giá cổ phiếu biến đổi trung bình, tạo ra tín hiệu giao dịch rõ ràng hơn.
Chiến lược giao dịch chéo của MACD kết hợp với tư duy hai đường bằng nhau, sử dụng sự kết hợp của đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm để lọc tiếng ồn ngắn hạn và chỉ nắm bắt các điểm biến động xu hướng trung bình và dài hạn của giá cổ phiếu. Nó có thể tạo ra ít tín hiệu giả hơn so với chỉ số giá đơn lẻ.
MACD tự nó rất nhạy cảm, có thể phản ánh một cách nhạy cảm xu hướng thay đổi giá. Việc thêm đường phân phối có thể lọc ra nhiều tín hiệu giả ngắn hạn. Chỉ khi xu hướng trung bình thay đổi rõ ràng, MACD sẽ phá vỡ đường phân phối lên xuống, tín hiệu sẽ được tạo ra.
Trong thời gian tăng giá bền vững, MACD duy trì trên đường phân phối hầu hết thời gian, có thể bắt được cơ hội nhiều đầu. Đồng thời, trong thời gian giảm giá liên tục, MACD cũng có thể duy trì hình dạng nhiều trống, cung cấp tín hiệu trống kịp thời.
Do tín hiệu giao dịch mua bán của chiến lược hoàn toàn phụ thuộc vào sự giao thoa của đường trung bình di chuyển, nếu thị trường có nhiều biến động, sẽ tạo ra nhiều tín hiệu giả, dẫn đến việc dừng lỗ thường xuyên. Chiến lược thực tế không có lợi nhuận.
Giá cổ phiếu vượt qua đường phân phối không hoàn toàn đảm bảo xu hướng trung hạn sẽ thay đổi. Chỉ có một chỉ số kỹ thuật đơn lẻ là tín hiệu mua điểm có một số điểm mù quáng, lựa chọn thời điểm có thể không chính xác.
Trong thị trường biến động nhanh chóng, chỉ dựa vào giao điểm của chỉ số đường hai chiều như là ngưỡng định, có thể bỏ lỡ nhiều cơ hội giao dịch hơn. Trong các trường hợp mạnh mẽ phức tạp hơn, chiến lược này cũng sẽ tạo ra sự chậm trễ rõ rệt.
Tăng chỉ số lọc thanh khoản và biến động, giảm tần suất mở vị trí, tránh giao dịch không hiệu quả. Ví dụ như tăng khối lượng giao dịch, điều chỉnh động các tham số trung bình di chuyển.
Kết hợp với nhiều chỉ số kỹ thuật khác để tạo ra một bộ chỉ số, cải thiện chất lượng tín hiệu. Chỉ số ngắn hạn kết hợp với chỉ số trung bình và dài hạn, có thể đánh giá toàn diện hơn về cấu trúc thị trường.
Tăng các thuật toán học máy, đào tạo các tham số phù hợp hơn với môi trường thị trường hiện tại và giảm thiểu sự can thiệp của con người.
Kết hợp với chỉ số hoảng loạn như VIX để dự đoán xu hướng và biến động của thị trường trong giai đoạn đầu, tham số điều chỉnh động để tận dụng tốt hơn cơ hội MACD.
Chiến lược giao chéo phân phối MACD sử dụng nguyên tắc giao chéo hai đường bằng nhau để tạo ra tín hiệu giao dịch. Sự thay đổi trong xu hướng giá trung bình của cổ phiếu sẽ có đặc điểm rõ ràng thông qua bản đồ chênh lệch của đường trung bình nhanh và chậm. Việc thêm đường phân phối cũng có hiệu quả trong việc lọc một số tín hiệu nhiễu. Chiến lược này có một số ưu thế khi nắm bắt sự chuyển đổi xu hướng trung bình rõ ràng hơn.
/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@author : SudeepBisht
//@version=2
strategy(title="MACD with Signal", shorttitle="MACD_with_Signal")
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 ? green : histA_IsDown ? lime : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? green : 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=3)
plot(smd and outSignal ? outSignal : na, title="Signal", color=blue, style=line ,linewidth=1)
plot(sh and outHist ? outHist : na, title="", color=plot_color, style=columns, linewidth=4)
//plot(sd and cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=circles, linewidth=4, color=macd_color)
hline(0, '0 Line', 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)
if (crossunder(macd_chk, checker))
strategy.entry("BBandSE", strategy.short)