Chiến lược giao dịch định lượng kết hợp RSI, MACD và hỗ trợ / kháng cự

Tác giả:ChaoZhang, Ngày: 2024-01-05 16:24:58
Tags:

img

Tổng quan

Chiến lược này dựa trên các chỉ số RSI và MACD, kết hợp với mức hỗ trợ / kháng cự để đánh giá tín hiệu giao dịch. Tên của nó là chiến lược Panda Sticking Out Tongue. Chiến lược sử dụng chỉ số RSI để xác định mức mua quá mức / bán quá mức, chỉ số MACD để xác định xu hướng tăng / giảm, và vẽ mức hỗ trợ / kháng cự dựa trên giá cao nhất và thấp nhất trong 100 giai đoạn qua, tạo ra tín hiệu mua gần ngưỡng hỗ trợ và bán tín hiệu gần ngưỡng kháng cự. Nó thuộc về một chiến lược theo xu hướng phổ biến.

Chiến lược logic

Chiến lược này chủ yếu dựa trên hai chỉ số - RSI và MACD. Chỉ số RSI đánh giá tình trạng mua quá mức / bán quá mức, trong khi chỉ số MACD xác định tình trạng xu hướng tăng / giảm. Đầu tiên nó tính toán giá trị RSI 14 giai đoạn, và đặt ngưỡng mua quá mức là 70 và ngưỡng bán quá mức là 30. Sau đó nó tính toán giá trị MACD dựa trên đường nhanh 12 ngày, đường chậm 26 ngày và đường tín hiệu 9 ngày. RSI dưới 30 được coi là bán quá mức; RSI trên 70 được coi là mua quá mức.

Ngoài ra, chiến lược cũng tính toán giá cao nhất và thấp nhất trong 100 thời gian qua là mức hỗ trợ / kháng cự. Khi tín hiệu mua được kích hoạt, giá cần phải gần mức hỗ trợ, tức là trong phạm vi 1% mức hỗ trợ, để thực sự phát hành lệnh mua. Tương tự như vậy, khi tín hiệu bán được kích hoạt, giá cần phải nằm trong phạm vi 1% dưới mức kháng cự để thực sự phát hành lệnh bán.

Ưu điểm của Chiến lược

Chiến lược này kết hợp phân tích xu hướng và phát hiện mức mua quá mức / bán quá mức để tránh các tín hiệu sai dựa trên chỉ số duy nhất. Bằng cách giới thiệu bộ lọc hỗ trợ / kháng cự, nó có thể giảm các giao dịch sai do phục hồi gần các mức S / R chính. Sự kết hợp của MACD và RSI có thể xác định chính xác các biến động giá và tình trạng OB / OS. So với các chiến lược Moving Average đơn giản, chiến lược này có thể nắm bắt xu hướng giá dài hạn linh hoạt hơn.

Rủi ro của chiến lược

Những rủi ro chính của chiến lược này bao gồm:

  1. Nó có thể bỏ lỡ hầu hết lợi nhuận trong xu hướng mạnh, vì nó có xu hướng vào sau khi đảo ngược kết thúc.

  2. Các thiết lập tham số RSI và MACD không phù hợp có thể gây ra tín hiệu sai.

  3. Logic phát hiện S/R đơn giản có thể đánh giá quá cao hoặc đánh giá thấp các vùng S/R thực tế.

  4. Thiếu cơ chế dừng lỗ. Không thể kiểm soát hiệu quả lỗ trong điều kiện thị trường cực đoan.

Để giải quyết những rủi ro này, các phương pháp như MACD thích nghi, điều chỉnh các tham số RSI tối ưu hóa, xác định S / R được cải thiện, mô hình chế độ thị trường vv có thể được sử dụng để cải thiện chiến lược.

Hướng dẫn để cải thiện

Chiến lược có thể được tăng cường từ các khía cạnh sau:

  1. Đưa ra các cơ chế dừng lỗ ví dụ như CANVAS dừng lỗ

  2. Sử dụng MACD thích nghi để điều chỉnh tham số động

  3. Đưa ra nhận dạng mô hình giá để xác định S / R khoa học hơn

  4. Kết hợp nhiều dữ liệu hơn để thiết lập logic phát hiện trạng thái thị trường để sử dụng các thông số khác nhau theo cách thích nghi

  5. Sử dụng thuật toán học máy để tối ưu hóa chiến lược từ đầu đến cuối

Thông qua những cải tiến này, chúng ta có thể giảm thêm việc rút và cải thiện sự ổn định của chiến lược.

Kết luận

Chiến lược này tích hợp các chỉ số RSI và MACD để xác định tình trạng OB / OS, và giao dịch xung quanh mức hỗ trợ / kháng cự, đại diện cho một cách tiếp cận theo xu hướng. Bằng cách kết hợp bộ lọc hỗ trợ / kháng cự, rủi ro được giảm. Ưu điểm nằm trong các tín hiệu ổn định và rủi ro có thể kiểm soát phù hợp với việc nắm giữ dài hạn.


/*backtest
start: 2023-12-28 00:00:00
end: 2024-01-04 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI + MACD with Support and Resistance", shorttitle="RSI_MACD_SR", overlay=true)

// Input for RSI and MACD values
rsiOverbought = input(70, title="RSI Overbought Threshold")
rsiOversold = input(30, title="RSI Oversold Threshold")
macdFastLength = input(12, title="MACD Fast Length")
macdSlowLength = input(26, title="MACD Slow Length")
macdSignalSmoothing = input(9, title="MACD Signal Smoothing")

// Calculating RSI and MACD
rsiValue = ta.rsi(close, 14)
[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalSmoothing)

// Support and Resistance
support = ta.lowest(100)
resistance = ta.highest(100)

// Drawing support and resistance lines
// line.new(x1=bar_index[0], y1=support, x2=bar_index[-1], y2=support, color=color.green, width=1)
// line.new(x1=bar_index[0], y1=resistance, x2=bar_index[-1], y2=resistance, color=color.red, width=1)

// Buy Condition: If RSI is oversold and MACD line crosses above the signal line
// Additionally, check if price is near the support line
longCondition = ta.crossover(macdLine, signalLine) and rsiValue < rsiOversold and (close - support) < (close * 0.01)
strategy.entry("Long", strategy.long, when=longCondition, comment="Buy")

// Sell Condition: If RSI is overbought and MACD line crosses below the signal line
// Additionally, check if price is near the resistance line
shortCondition = ta.crossunder(macdLine, signalLine) and rsiValue > rsiOverbought and (resistance - close) < (close * 0.01)
strategy.entry("Short", strategy.short, when=shortCondition, comment="Sell")

// Plot values on the chart for visualization
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")

Thêm nữa