Tài nguyên đang được tải lên... tải...

Chiến lược theo dõi xu hướng nhiều khung thời gian dựa trên Impulse MACD và Double Moving Average Crossover

Tác giả:ChaoZhang, Ngày: 2024-05-17 15:33:02
Tags:MACDSMMASMAZLEMAEMAMA

img

Tổng quan

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

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

  1. Tính toán SMMA và ZLEMA của giá cao, thấp và đóng với chiều dài 34 để có được Impulse MACD (MD).
  2. Tính toán SMA 9 giai đoạn của Impulse MACD dưới dạng đườ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 sức mạnh xu hướng.
  4. Tạo tín hiệu mua khi Impulse MACD vượt qua trên đường tín hiệu, và đóng vị trí khi nó vượt qua bên dưới.
  5. Chụp biểu đồ Impulse MACD với các màu sắc khác nhau dựa trên mối quan hệ giữa giá, Impulse MACD và giá cao / thấp SMMA để phản ánh trực quan sức mạnh xu hướng.

Ưu điểm chiến lược

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

Rủi ro chiến lược

  1. Chọn tham số không đúng có thể dẫn đến tín hiệu thường xuyên hoặc chậm, đòi hỏi tối ưu hóa dựa trên các thị trường và khung thời gian khác nhau.
  2. Chiến lược có thể tạo ra nhiều tín hiệu sai và gây ra tổn thất trong thị trường hỗn loạn.
  3. Chiến lược này không có cơ chế dừng lỗ và có thể phải đối mặt với sự rút vốn đáng kể trong các thị trường biến động.

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

  1. Đưa ra các chỉ số xác định xu hướng như ADX để chỉ giao dịch khi xu hướng rõ ràng, giảm lỗ trong thị trường hỗn loạn.
  2. Xác nhận các tín hiệu giao dịch được tạo ra với các chỉ số khác như RSI và ATR để cải thiện chất lượng tín hiệu.
  3. Đặt mức dừng lỗ và lấy lợi nhuận hợp lý để kiểm soát rủi ro giao dịch duy nhất.
  4. Tối ưu hóa các tham số bằng cách sử dụng các phương pháp như thuật toán di truyền để tìm kết hợp tham số tối ưu.

Tóm lại

Chiến lược này xây dựng một chỉ số MACD được cải thiện dựa trên các loại trung bình động khác nhau và tạo ra tín hiệu giao dịch thông qua giao chéo của nó với đường tín hiệu trong khi trực quan hiển thị sức mạnh xu hướng. Ý tưởng tổng thể rõ ràng và lợi thế là hiển nhiên. Tuy nhiên, chiến lược cũng có một số hạn chế nhất định, chẳng hạn như khả năng thích nghi kém với thị trường hỗn loạn và thiếu các biện pháp kiểm soát rủi ro. Những cải tiến hơn nữa có thể được xem xét từ các khía cạnh như xác định xu hướng, xác nhận tín hiệu, kiểm soát rủi ro và tối ưu hóa tham số để tăng cường độ bền và lợi nhuận của 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")


Có liên quan

Thêm nữa