Chiến lược MACD đa khung thời gian

Tác giả:ChaoZhang, Ngày: 2023-11-28 15:33:35
Tags:

img

Tổng quan

Chiến lược MACD đa khung thời gian là một chiến lược giao dịch định lượng theo dõi xu hướng sử dụng chỉ số MACD trên nhiều khung thời gian. Chiến lược này tạo ra tín hiệu giao dịch bằng cách đánh giá xu hướng giá có phù hợp trong các khoảng thời gian khác nhau hay không (3 phút, 5 phút, 15 phút, 30 phút).

Chiến lược logic

Khái niệm cơ bản của chiến lược này là tính toán tình hình giao thoa chỉ số MACD trên nhiều khung thời gian (3 phút, 5 phút, 15 phút, 30 phút). Đầu tiên chỉ số MACD được tính trên mỗi khung thời gian để đánh giá xu hướng giá (lên hoặc xuống) trong khung thời gian đó. Sau đó, xu hướng giá trên nhiều khung thời gian được đánh giá toàn diện:

  1. Khi giá tăng trên tất cả các khung thời gian, một tín hiệu mua được tạo ra.
  2. Khi giá giảm qua tất cả các khung thời gian, một tín hiệu bán được tạo ra.

Bằng cách đánh giá xu hướng qua các khung thời gian, tiếng ồn thị trường ngắn hạn có thể được lọc hiệu quả, làm cho các tín hiệu giao dịch đáng tin cậy hơn.

Ưu điểm

Chiến lược này có những lợi thế sau:

  1. Phát hiện xu hướng trên các khung thời gian lọc ra tiếng ồn và làm cho tín hiệu giao dịch đáng tin cậy hơn.
  2. Các thông số chỉ số MACD có thể được tùy chỉnh để phù hợp với môi trường thị trường khác nhau.
  3. Các khung thời gian cho phán quyết toàn diện có thể được cấu hình linh hoạt để xác định các quy tắc giao dịch độc lập.

Rủi ro và giải pháp

Chiến lược này cũng có những rủi ro sau:

  1. Khi đánh giá tính nhất quán của xu hướng trên tất cả các khung thời gian, có thể bỏ qua sự đảo ngược địa phương.
  2. Cài đặt tham số MACD không chính xác có thể dẫn đến hiệu suất tín hiệu giao dịch kém.

Các giải pháp tương ứng:

  1. Các quy tắc đánh giá có thể được nới lỏng một cách vừa phải để cho phép đảo ngược giá trên các khung thời gian riêng lẻ để nắm bắt nhiều cơ hội hơn.
  2. Các thông số MACD cần phải được điều chỉnh theo các thị trường khác nhau để làm cho tín hiệu giao dịch phù hợp hơn với xu hướng hiện tại.

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

Chiến lược này có thể được tối ưu hóa thêm trong các khía cạnh sau:

  1. Tăng hoặc giảm số khung thời gian cần thiết để đánh giá toàn diện để tìm ra sự kết hợp tối ưu.
  2. Kiểm tra các cài đặt tham số chỉ số MACD khác nhau.
  3. Điều chỉnh các quy tắc nhập và xuất cụ thể dựa trên kết quả backtesting thực tế.

Tóm lại

Chiến lược Multi Timeframe MACD sử dụng khả năng đánh giá xu hướng của chỉ số MACD để phát hiện chuyển động giá trên các khung thời gian, có thể lọc hiệu quả tiếng ồn và cải thiện chất lượng tín hiệu. Chiến lược này có thể được điều chỉnh linh hoạt cho các sản phẩm và môi trường thị trường khác nhau thông qua điều chỉnh tham số và tối ưu hóa quy tắc, và có tính thực tế mạnh mẽ.


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

//@version=2
strategy("[RichG] Easy MTF Strategy", overlay=false)

TF_1_time = input("3", "Timeframe 1")
TF_2_time = input("5", "Timeframe 2")
TF_3_time = input("15", "Timeframe 3")
TF_4_time = input("30", "Timeframe 4")

fastLen = input(title="Fast Length",  defval=12)
slowLen = input(title="Slow Length",  defval=26)
sigLen  = input(title="Signal Length",  defval=9)
[macdLine, signalLine, _] = macd(close, fastLen, slowLen, sigLen)

width = 5
upcolor = green
downcolor = red
neutralcolor = blue
linestyle = line

TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false
TF_1_color = TF_1 ? upcolor:downcolor

TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false
TF_2_color = TF_2 ? upcolor:downcolor

TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false
TF_3_color = TF_3 ? upcolor:downcolor

TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false
TF_4_color = TF_4 ? upcolor:downcolor

TF_global = TF_1 and TF_2 and TF_3 and TF_4 
TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false
TF_global_color = TF_global ? green : TF_global_bear ? red : white
TF_trigger_width = TF_global ? 6 : width

plot(1, style=linestyle, linewidth=width, color=TF_1_color)
plot(5, style=linestyle, linewidth=width, color=TF_2_color)
plot(10, style=linestyle, linewidth=width, color=TF_3_color)
plot(15, style=linestyle, linewidth=width, color=TF_4_color)
plot(25, style=linestyle, linewidth=4, color=TF_global_color)    

exitCondition_Long = TF_global_bear
exitCondition_Short = TF_global

longCondition = TF_global
if (longCondition)
    strategy.entry("MTF_Long", strategy.long)

shortCondition = TF_global_bear
if (shortCondition)
    strategy.entry("MTF_Short", strategy.short)
    
strategy.close("MTF_Long", when=exitCondition_Long)    
strategy.close("MTF_Short", when=exitCondition_Short)

Thêm nữa