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

Chiến lược theo dõi xu hướng theo nhiều quy mô thời gian dựa trên đập MACD và đường chéo hai đường ngang

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

基于脉冲MACD和双均线交叉的多时间尺度趋势追踪策略

Thông tin chi tiết

Chiến lược này sử dụng nhiều chỉ số đường 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 thông qua sự 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 đường trung bình di chuyển trên các thang 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 cường độ và hướng của xu hướng.

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

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

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

  1. Một số loại đường trung bình di chuyển được sử dụng để phản ánh hoàn toàn hơn xu hướng thị trường.
  2. Các chỉ số MACD được cải tiến (Impulse MACD) xem xét vị trí của giá so với đường trung bình di chuyển và có thể phản ánh tốt hơn cường độ xu hướng.
  3. Việc giới thiệu dây tín hiệu 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. Đánh giá các điểm trên thị trường theo mức độ tăng trưởng của xu hướng.

Rủi ro chiến lược

  1. Chọn các tham số không đúng có thể dẫn đến tín hiệu thường xuyên hoặc chậm, cần tối ưu hóa theo thị trường và chu kỳ khác nhau.
  2. Đối với thị trường bất ổn, chiến lược này có thể tạo ra nhiều tín hiệu sai và dẫn đến tổn thất.
  3. Trong khi đó, các nhà đầu tư cũng cho biết họ có thể làm việc với các công ty khác trong lĩnh vực này.

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

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

Tóm lại

Chiến lược này xây dựng các chỉ số MACD được cải thiện dựa trên nhiều loại đường trung bình chuyển động và tạo ra các tín hiệu giao dịch bằng cách chéo với các đường tín hiệu, đồng thời hiển thị trực quan cường độ xu hướng, ý tưởng tổng thể rõ ràng và 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 nghi với các thị trường lung lay, thiếu các biện pháp kiểm soát gió, v.v.


/*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")


Nội dung liên quan

Nhiều hơn nữa