Chiến lược định lượng dài hạn dựa trên RSI


Ngày tạo: 2024-02-05 13:51:01 sửa đổi lần cuối: 2024-02-05 13:51:01
sao chép: 0 Số nhấp chuột: 362
1
tập trung vào
1166
Người theo dõi

Chiến lược định lượng dài hạn dựa trên RSI

Tổng quan

Chiến lược này được gọi là chiến lược định lượng đường dài của chỉ số sức mạnh tương đối (RSI), được gọi tắt là chiến lược đường dài RSI. Chiến lược này xây dựng chỉ số kỹ thuật RSI bằng cách tính toán đường trung bình di chuyển của giá tăng và giảm trong một khoảng thời gian nhất định, và thiết lập đường mua quá mức bán để đánh giá thời điểm.

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

Chỉ số RSI được sử dụng để đánh giá xem giá chứng khoán hiện tại có bị đánh giá quá cao hay quá thấp bằng cách so sánh mức tăng trung bình và mức giảm trung bình trong một khoảng thời gian. Công thức tính toán là:

RSI = 100 - 100 / (1 + UP / DOWN)

Trong đó, UP là mức tăng trung bình của giá đóng cửa trong n ngày gần đây nhất; DOWN là mức giảm trung bình của giá đóng cửa trong n ngày gần đây nhất. Chỉ số dao động trong khoảng 0-100, hơn 70 là vùng mua quá mức và dưới 30 là vùng bán quá mức.

Chiến lược này đặt tham số RSI Length = 14, tính RSI dựa trên giá đóng cửa 14 ngày. Và đặt đường bán tháo Rsvalue = 40, tức là RSI thấp hơn 40 được coi là bán tháo. Khi RSI thấp hơn 40 vào ngày đó, mở cửa sổ mua, thực hiện chiến lược xây dựng vị trí từng bước, mua vào từng bước trong khu vực bán tháo và đặt thời gian bán tháo cuối cùng, bán hết sau khi vượt quá thời gian bán tháo.

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là, thông qua các chỉ số RSI đánh giá thị trường thời điểm, thực hiện bắt giữ giá thấp. RSI thấp hơn 40 là tình trạng bán tháo, đại diện cho quá lớn trước khi giảm, có cơ hội hồi phục, khi này dần xây dựng vị trí, có thể có được chi phí tốt hơn.

Ngoài ra, chiến lược xây dựng vị trí theo từng bước có thể làm giảm rủi ro từ một lần nhập. Cửa sổ xây dựng vị trí là điểm cao giữ vị trí, thời gian bán cuối cùng là điểm thấp giữ vị trí, thực hiện đầu tư dài dòng.

Phân tích rủi ro

Chiến lược này phụ thuộc chủ yếu vào chỉ số kỹ thuật RSI, có một sự chậm trễ. Đặc biệt là khi tình hình thị trường thay đổi đột ngột, RSI có thể không phản ứng kịp thời. Khi đó, nếu mù quáng theo chỉ số RSI để tạo vị trí, lợi nhuận có thể bị hạn chế hoặc tăng lỗ.

Ngoài ra, chiến lược cung cấp tín hiệu giao dịch có khả năng. Ngay cả khi RSI thấp hơn 40, điều đó không có nghĩa là có 100% cơ hội phục hồi.

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

Chiến lược này có thể được tối ưu hóa ở một số khía cạnh:

  1. Kết hợp nhiều cổ phiếu, giao dịch theo danh mục. Một cổ phiếu đơn lẻ dễ bị ảnh hưởng bởi các sự kiện cụ thể, trong khi danh mục có thể phân tán rủi ro cá nhân.

  2. Tham gia chiến lược dừng lỗ để kiểm soát rủi ro hơn nữa. Ví dụ như tham gia theo dõi dừng lỗ, dừng lỗ khi giá tiếp tục giảm.

  3. Chiến lược tối ưu hóa việc xây dựng kho, chẳng hạn như sử dụng giá trung bình có trọng lượng theo thời gian trong khu vực bán tháo để xây dựng kho dần dần, thay vì xây dựng toàn bộ kho.

  4. Kết hợp các tín hiệu lọc của các chỉ số khác, chẳng hạn như chỉ số năng lượng, trung bình di chuyển, v.v., để tránh theo dõi mù quáng RSI.

Tóm tắt

Chiến lược này được xây dựng bằng cách xây dựng các chỉ số RSI để xác định khoảng mua quá mức, tạo nhiều vị trí đầu vào trong khoảng bán quá mức và thiết lập thời gian bán cuối cùng để thực hiện nắm giữ đường dài. So với giao dịch ngắn, chiến lược này phù hợp hơn như một công cụ đầu tư định lượng đường dài. Ưu điểm của nó là nắm bắt giá thấp và kiểm soát chi phí, trong khi rủi ro nằm ở sự chậm trễ của chỉ số và tín hiệu sai lệch.

Mã nguồn chiến lược
/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Relative Strength Index", shorttitle="RSI")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi, "RSI", color=#8E1599)
band1 = hline(70, "Upper Band", color=#C0C0C0)
band0 = hline(30, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, title="Background")
Rsvalue = input(defval = 40, title = "RSvalue", minval = 20, maxval = 75)


FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2015, title = "From Year", minval = 999)
ToMonth   = input(defval = 3, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2022, title = "To Year", minval = 999)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)
booking   = timestamp(ToYear, ToMonth, ToDay, 23, 59)

window()  => time >= start and time <= finish ? true : false
endtrade() => time >= booking ? true : false


longCondition = rsi< Rsvalue

if (longCondition)
    strategy.entry("BUY", strategy.long)
    strategy.close("BUY")