Chiến lược theo dõi xu hướng đa thời gian dựa trên MACD xung lực và đường trung bình động chéo kép

MACD SMMA SMA ZLEMA EMA MA
Ngày tạo: 2024-05-17 15:33:02 sửa đổi lần cuối: 2024-05-17 15:33:02
sao chép: 5 Số nhấp chuột: 1201
1
tập trung vào
1617
Người theo dõi

Chiến lược theo dõi xu hướng đa thời gian dựa trên MACD xung lực và đường trung bình động chéo kép

Tổng quan

Chiến lược này sử dụng nhiều chỉ số trung bình di chuyển, bao gồm SMMA, SMA, ZLEMA và EMA, và dựa trên chúng để xây dựng một chỉ số MACD được cải tiến (Impulse MACD), tạo ra tín hiệu giao dịch bằng cách giao thoa giữa Impulse MACD và đường tín hiệu của nó. Ý tưởng chính của chiến lược là sử dụng các đường trung bình di chuyển trên các quy mô thời gian khác nhau để nắm bắt xu hướng thị trường, đồng thời sử dụng Impulse MACD để xác nhận cường độ và hướng của xu hướng.

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

  1. Xác định chiều dài 34 của giá cao, giá thấp, giá đóng cửa SMMA, ZLEMA, được lấy từ Impulse MACD ((MD)
  2. Tính toán SMA 9 chu kỳ của Impulse MACD như một đường tín hiệu ((SB) }}.
  3. Tính toán sự khác biệt giữa Impulse MACD và đường tín hiệu ((SH), phản ánh cường độ của xu hướng.
  4. Khi Impulse MACD vượt qua đường tín hiệu, nó tạo ra tín hiệu mua, và khi vượt qua đường tín hiệu, nó sẽ tháo dỡ.
  5. Dựa trên mối quan hệ giữa giá với Impulse MACD, giá cao và giá thấp SMMA, biểu đồ cột Impulse MACD được vẽ bằng các màu khác nhau, trực quan phản ánh xu hướng mạnh hoặc yếu.

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

  1. Sử dụng nhiều loại trung bình di chuyển để phản ánh toàn diện hơn xu hướng thị trường.
  2. Chỉ số MACD được cải tiến (Impulse MACD) tính đến vị trí của giá so với đường trung bình di chuyển, có thể phản ánh tốt hơn sức mạnh của xu hướng.
  3. Việc đưa vào các đường tín hiệu sẽ giúp lọc ra một số tín hiệu giả và cải thiện chất lượng tín hiệu.
  4. Màu sắc khác nhau của Impulse MACD được vẽ theo cường độ của xu hướng, giúp bạn trực quan đánh giá xu hướng.

Rủi ro chiến lược

  1. Lựa chọn tham số không đúng có thể dẫn đến tín hiệu thường xuyên hoặc chậm trễ, cần được tối ưu hóa cho các thị trường và chu kỳ khác nhau.
  2. Đối với các trường hợp chấn động, chiến lược này có thể tạo ra nhiều tín hiệu giả và dẫn đến tổn thất.
  3. Chiến lược này không có cơ chế dừng lỗ và có thể bị rút lại nhiều hơn trong trường hợp thị trường tăng mạnh.

Hướng tối ưu hóa chiến lược

  1. Việc đưa ra các chỉ số đánh giá xu hướng, chẳng hạn như ADX, để giao dịch khi xu hướng rõ ràng, giảm tổn thất trong tình huống xung đột.
  2. Đối với tín hiệu giao dịch được tạo ra, có thể kết hợp với các chỉ số khác như RSI, ATR để xác nhận thứ hai, cải thiện chất lượng tín hiệu.
  3. Thiết lập các điểm dừng và dừng hợp lý, kiểm soát rủi ro giao dịch đơn.
  4. Tối ưu hóa các tham số, chẳng hạn như sử dụng các thuật toán di truyền để tìm kiếm sự kết hợp tham số tối ưu.

Tóm tắt

Chiến lược này dựa trên nhiều loại trung bình di chuyển xây dựng các chỉ số MACD được cải thiện và tạo ra tín hiệu giao dịch bằng cách giao chéo với đường tín hiệu, đồng thời hiển thị trực quan cường độ xu hướng, tư duy tổng thể rõ ràng, lợi thế rõ ràng. Tuy nhiên, chiến lược này cũng có một số hạn chế, chẳng hạn như không thích ứng với tình trạng xung đột, thiếu các biện pháp kiểm soát rủi ro.

Mã nguồn chiến lược
/*backtest
start: 2023-05-11 00:00:00
end: 2024-05-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Impulse MACD Strategy [LazyBear]", shorttitle="IMACD_Strategy", overlay=false)

// Function to calculate SMMA
calc_smma(src, len) =>
    var float smma = na
    smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
    smma

// Function to calculate SMA
	ta.sma(src, len)
    sum = 0.0
    for i = 0 to len - 1
        sum := sum + src[i]
    sum / len

// Function to calculate ZLEMA
calc_zlema(src, length) =>
    var float ema1 = na
    var float ema2 = na
    var float d = na
    ema1 := ta.ema(src, length)
    ema2 := ta.ema(ema1, length)
    d := ema1 - ema2
    ema1 + d

// Function to calculate EMA
calc_ema(src, len) =>
    ema = 0.0
    ema := ta.ema(src, len)
    ema

// Inputs
lengthMA = input(34, title="Length of Moving Average")
lengthSignal = input(9, title="Length of Signal Line")

// Calculations
src = hlc3
hi = calc_smma(high, lengthMA)
lo = calc_smma(low, lengthMA)
mi = calc_zlema(src, lengthMA) 

md = mi > hi ? (mi - hi) : mi < lo ? (mi - lo) : 0
sb = ta.sma(md, lengthSignal)
sh = md - sb
mdc = src > mi ? src > hi ? color.lime : color.green : src < lo ? color.red : color.orange

// Plotting
plot(0, color=color.gray, linewidth=1, title="MidLine")
plot(md, color=mdc, linewidth=2, title="ImpulseMACD", style=plot.style_histogram)
plot(sh, color=color.blue, linewidth=2, title="ImpulseHisto", style=plot.style_histogram)
plot(sb, color=color.maroon, linewidth=2, title="ImpulseMACDCDSignal")

// Execute trades based on signals
if (ta.crossover(md, sb))
    strategy.entry("Buy", strategy.long)
if (ta.crossunder(md, sb))
    strategy.close("Buy")