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


Ngày tạo: 2023-11-28 15:33:35 sửa đổi lần cuối: 2023-11-28 15:33:35
sao chép: 0 Số nhấp chuột: 1201
1
tập trung vào
1617
Người theo dõi

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

Tổng quan

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

Nguyên tắc chiến lược

Lập luận cốt lõi của chiến lược này là tính toán MACD trên nhiều khung thời gian: 3 phút, 5 phút, 15 phút, 30 phút. Đầu tiên, tính toán MACD trên mỗi khung thời gian, dựa trên MACD để đánh giá xu hướng giá trong khung thời gian đó: tăng hoặc giảm.

  1. Một tín hiệu mua được tạo ra khi giá cả tăng trong tất cả các khung thời gian;
  2. Một tín hiệu bán ra được tạo ra khi giá giảm trong tất cả các khung thời gian.

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

Lợi thế chiến lược

Chiến lược này có những ưu điểm sau:

  1. Trải qua các khung thời gian để phát hiện xu hướng, lọc tiếng ồn và làm cho tín hiệu giao dịch đáng tin cậy hơn;
  2. Các tham số chỉ số MACD có thể được thiết lập tùy chỉnh để phù hợp với môi trường thị trường khác nhau;
  3. Tính năng linh hoạt, khung thời gian cần có phán đoán toàn diện, quy tắc giao dịch tùy chỉnh.

Rủi ro chiến lược và giải pháp

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

  1. Trong tất cả các khung thời gian để đánh giá sự nhất quán của xu hướng, có thể bỏ lỡ cơ hội đảo ngược địa phương;
  2. Các tham số chỉ số MACD được thiết lập không đúng có thể dẫn đến hiệu quả tín hiệu giao dịch kém.

Giải pháp tương ứng:

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

Hướng tối ưu hóa

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

  1. Tăng hoặc giảm số khung thời gian cần có phán đoán tổng hợp để tìm kiếm sự kết hợp tốt nhất;
  2. Kiểm tra các thiết lập tham số MACD khác nhau;
  3. Điều chỉnh các quy tắc nhập cảnh và xuất cảnh cụ thể theo tình hình thực tế.

Tóm tắt

Chiến lược MACD đa khung thời gian sử dụng chức năng đánh giá xu hướng của chỉ số MACD, thực hiện phát hiện chuyển động giá trên khung thời gian, có thể lọc tiếng ồn hiệu quả, 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 thông qua tham số và tối ưu hóa quy tắc, thích ứng linh hoạt với các giống và môi trường hoạt động khác nhau, có tính thực tiễn mạnh mẽ.

Mã nguồn chiến lược
/*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)