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

Chiến lược giao dịch định lượng dựa trên RSI hồi quy tuyến tính

Tác giả:ChaoZhang, Ngày: 2024-01-24 11:35:19
Tags:

img

Tổng quan

Chiến lược này được thiết kế dựa trên chỉ số RSI hồi quy tuyến tính. Nó tạo ra tín hiệu mua và bán bằng cách tính toán sự chéo chéo giữa RSI hồi quy tuyến tính và EMA. Chiến lược cũng cung cấp hai tùy chọn cho logic mua có thể được chọn khi cần thiết.

Chiến lược logic

Chiến lược này đầu tiên tính toán hồi quy tuyến tính 200 giai đoạn, sau đó tính toán RSI 21 giai đoạn dựa trên kết quả hồi quy tuyến tính. Sau đó, EMA 50 giai đoạn được tính toán. Khi RSI vượt qua EMA, một tín hiệu mua được tạo ra. Khi RSI vượt qua dưới EMA, một tín hiệu bán được kích hoạt để đóng vị trí.

Chiến lược cung cấp hai loại logic mua:

  1. Mua khi RSI vượt qua EMA
  2. Mua khi RSI trên EMA và cũng trên đường mua quá mức

Khả năng mua phù hợp có thể được chọn dựa trên điều kiện thị trường.

Phân tích lợi thế

Chiến lược này kết hợp các điểm mạnh của cả RSI hồi quy tuyến tính và EMA, có hiệu quả lọc ra một số tiếng ồn giá và tạo ra các tín hiệu giao dịch đáng tin cậy hơn.

Chỉ số RSI hồi quy tuyến tính nắm bắt tốt hơn xu hướng, và EMA giúp xác định các bước ngoặt. Sự kết hợp của cả hai có thể tìm thấy cơ hội đảo ngược trung bình trong xu hướng.

Chiến lược cung cấp hai logic mua tùy chọn để linh hoạt hơn để thích nghi với các giai đoạn thị trường khác nhau. Ví dụ, logic đầu tiên có thể được sử dụng trong xu hướng mạnh, trong khi logic thứ hai phù hợp hơn với các thị trường khác nhau.

Phân tích rủi ro

Rủi ro chính của chiến lược này nằm ở sự thay đổi tiềm năng của mối quan hệ giữa chỉ số RSI và EMA, có thể dẫn đến các tín hiệu giao dịch không chính xác.

Ngoài ra, tính chất chậm của RSI và EMA như các chỉ số cũng có thể gây ra một số sự chậm trễ trong các bước vào và ra khỏi, không thể nắm bắt hoàn hảo các điểm chuyển đổi.

Để giảm thiểu rủi ro, các tham số như chiều dài của RSI và EMA có thể được tối ưu hóa để phối hợp tốt hơn giữa hai.

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

Chiến lược có thể được cải thiện từ các khía cạnh sau:

  1. Tối ưu hóa chiều dài của RSI hồi quy tuyến tính và EMA để tìm kết hợp tham số tốt nhất
  2. Thêm các chỉ số khác như MACD, Bollinger Bands vv để nâng cao chất lượng tín hiệu
  3. Tích hợp các số liệu biến động để điều chỉnh kích thước vị trí
  4. Sử dụng các kỹ thuật học máy để tự động tối ưu hóa các thông số

Kết luận

Chiến lược này thiết kế một chiến lược đảo ngược trung bình dựa trên RSI và EMA hồi quy tuyến tính, xác định các cơ hội đảo ngược trong phạm vi bằng cách nhìn vào các đường chéo RSI-EMA. Nó cũng cung cấp hai logic mua tùy chọn để linh hoạt để thích nghi với các thị trường khác nhau. Nhìn chung, bằng cách kết hợp nhiều chỉ số, chiến lược có thể phát hiện hiệu quả các cơ hội đảo ngược. Với điều chỉnh tham số và các bộ lọc bổ sung, nó có tiềm năng cho hiệu suất tốt hơn.


/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Linear RSI")

startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end   = timestamp(input(9999, "End Year"),   input(1, "Month"),   input(1, "Day"),   0, 0)
_testPeriod() => true

//inputs
length = input(defval=200, minval=1, title="LR length")
length2 = input(defval=21, minval=1, title="RSI length")
ema_fast = input(defval=50, minval=1, title="EMA")
lag = 0

overBought = input(50)
overSold = input(50)


//rsi
src = close
Lr = linreg(src, length, lag)
rsi = rsi(Lr, length2)
ema = ema(rsi, ema_fast)

plot(rsi, color = rsi > overBought ? color.green : rsi < overSold ? color.red : color.silver)
plot(overBought, color=color.purple)
plot(overSold, color=color.purple)
plot(ema, color=color.blue)

first_type = input(true, title="Use first logic?")
second_type =  input(false, title="Use second logic?")

long_condition = (first_type ? crossover(rsi, ema) and _testPeriod() : false) or (second_type ? rsi > ema and rsi > overBought and _testPeriod() : false)
strategy.entry('BUY', strategy.long, when=long_condition)  
 
short_condition = crossunder(rsi, ema)
strategy.close('BUY', when=short_condition)

Thêm nữa