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


Ngày tạo: 2024-01-24 11:35:19 sửa đổi lần cuối: 2024-01-24 11:35:19
sao chép: 0 Số nhấp chuột: 770
1
tập trung vào
1617
Người theo dõi

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

Tổng quan

Chiến lược này được thiết kế dựa trên chỉ số RSI Linear Regression. Chiến lược này tạo ra tín hiệu mua và bán bằng cách tính toán chéo của RSI và EMA Linear Regression. Chiến lược này đồng thời cung cấp hai lựa chọn logic mua, có thể được lựa chọn theo nhu cầu.

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

Chiến lược đầu tiên tính toán sự hồi phục tuyến tính với độ dài 200 chu kỳ, sau đó tính toán RSI với 21 chu kỳ dựa trên kết quả của sự hồi phục tuyến tính. Sau đó tính toán EMA với độ dài 50 chu kỳ. Khi RSI vượt qua EMA, nó tạo ra tín hiệu mua, và khi RSI vượt qua EMA, nó tạo ra tín hiệu bán.

Chiến lược này cung cấp hai logic mua:

  1. Mua khi RSI đeo EMA
  2. Mua khi RSI cao hơn EMA và cao hơn đường mua

Bạn có thể chọn cách mua dựa trên thị trường.

Phân tích lợi thế

Chiến lược này kết hợp lợi thế của RSI và EMA với sự hồi phục tuyến tính để có thể loại bỏ một phần tiếng ồn giá thành hiệu quả và tạo ra tín hiệu giao dịch đáng tin cậy hơn.

RSI có thể phản ánh tốt hơn xu hướng và EMA có thể giúp phát hiện điểm đảo ngược. Sự kết hợp của cả hai có thể tìm kiếm cơ hội đảo ngược trong xu hướng và tạo ra chiến lược đảo ngược trung bình.

Chiến lược này cung cấp hai loại logic mua có thể lựa chọn, có thể điều chỉnh linh hoạt hơn theo giai đoạn thị trường. Ví dụ, bạn có thể chọn logic đầu tiên khi xu hướng rõ ràng và logic thứ hai khi có biến động.

Phân tích rủi ro

Chiến lược này phụ thuộc chủ yếu vào mối quan hệ giữa RSI và EMA, và nếu mối quan hệ giữa hai điều này thay đổi, sẽ dẫn đến tín hiệu giao dịch bị lỗi. Đây là điểm rủi ro chính.

Ngoài ra, RSI và EMA cũng có thể bị tụt hậu, có thể dẫn đến sự chậm trễ của mua và bán, không thể nắm bắt hoàn hảo các điểm biến. Điều này cũng mang lại một số rủi ro thực tế.

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

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Tối ưu hóa các tham số chiều dài của RSI và EMA để tìm các tham số kết hợp tốt nhất
  2. Thêm các bộ lọc cho các chỉ số khác như MACD, Brinband, v.v. để cải thiện chất lượng tín hiệu
  3. Điều chỉnh quản lý vị trí kết hợp với chỉ số biến động
  4. Tự động tối ưu hóa tham số bằng cách sử dụng phương pháp học máy

Tóm tắt

Chiến lược này được thiết kế dựa trên RSI và EMA quay trở lại tuyến tính, một chiến lược quay trở lại có nghĩa là tìm kiếm cơ hội đảo ngược trong phạm vi cân bằng bằng sự giao thoa của RSI và EMA. Chiến lược này đồng thời cung cấp hai lựa chọn logic mua có thể đáp ứng linh hoạt với các tình huống thị trường khác nhau.

Mã nguồn chiến lược
/*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)