Chiến lược giao dịch định lượng Triple Relative Strength Index

RSI SMA
Ngày tạo: 2024-05-15 10:23:08 sửa đổi lần cuối: 2024-05-15 10:23:08
sao chép: 0 Số nhấp chuột: 841
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch định lượng Triple Relative Strength Index

Tổng quan

Chiến lược này chủ yếu sử dụng chỉ số RSI tương đối mạnh để đánh giá tình trạng quá mua quá bán của thị trường, kết hợp với giá trên đường trung bình di chuyển đơn giản 200 ngày (SMA) làm điều kiện lọc xu hướng, để quyết định có giao dịch hay không. Chiến lược này sử dụng ba chỉ số RSI để cùng nhau xây dựng điều kiện mở vị trí, chỉ khi RSI ngắn hạn nhỏ hơn 35 và có xu hướng giảm trong ba chu kỳ liên tiếp, trong khi RSI chu kỳ thứ ba nhỏ hơn 60 và đóng cửa hiện tại trên đường SMA 200 ngày.

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

  1. Tính toán chỉ số RSI cho một chu kỳ nhất định
  2. Xác định điều kiện mở lệnh:
    • RSI hiện tại dưới 35
    • RSI hiện tại nhỏ hơn RSI 1 chu kỳ trước, RSI 1 chu kỳ trước nhỏ hơn RSI 2 chu kỳ trước, RSI 2 chu kỳ trước nhỏ hơn RSI 3 chu kỳ trước
    • RSI ba chu kỳ trước khi nhỏ hơn 60
    • Giá đóng cửa hiện tại lớn hơn SMA 200 ngày
  3. Nếu 4 điều kiện trên được đáp ứng, thì bạn sẽ có nhiều tiền hơn.
  4. Trong quá trình giữ vị trí, nếu RSI vượt quá 50, bạn sẽ bị mất vị trí.
  5. Lặp lại các bước 2-4, giao dịch tiếp theo

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

  1. Xác định giá trị mua và bán vượt mức RSI, đặt vị trí trong khu vực mua và bán vượt mức, có thể nắm bắt cơ hội đảo ngược thị trường
  2. Tạo ra tín hiệu mở kho bằng RSI ba lần, giảm khả năng tín hiệu giả và tăng độ tin cậy tín hiệu
  3. Thêm giá trên đường trung bình 200 ngày làm điều kiện xu hướng để tránh giao dịch trong xu hướng giảm
  4. Các điều kiện của giao dịch là đơn giản và rõ ràng, có thể nhận được lợi nhuận kịp thời.
  5. Chiến lược logic rõ ràng, dễ hiểu và dễ thực hiện

Rủi ro chiến lược

  1. Chỉ số RSI có tín hiệu chậm trễ, có thể bỏ lỡ thời gian mở cửa tốt nhất
  2. Điều kiện mở vị trí tương đối nghiêm ngặt, tần suất giao dịch thấp, có thể bỏ lỡ một phần của thị trường
  3. Trong khi đó, các nhà đầu tư khác cũng có xu hướng giảm bớt thị trường khi thị trường có nguy cơ biến động.
  4. Chiến lược chỉ có thể nắm bắt được xu hướng tăng một chiều, không thể nắm bắt được xu hướng giảm sau khi xu hướng đảo ngược

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

  1. Có thể xem xét thêm lệnh dừng di động hoặc lệnh dừng cố định để kiểm soát rủi ro giao dịch đơn lẻ
  2. Nghiên cứu kết hợp RSI với các chỉ số hỗ trợ khác để tăng độ tin cậy và kịp thời của tín hiệu mở lỗ
  3. Tối ưu hóa điều kiện mở vị trí, tăng tần suất giao dịch trong khi đảm bảo tín hiệu đáng tin cậy
  4. Tiến hành quản lý vị trí, điều chỉnh vị trí theo cường độ và biến động của xu hướng thị trường
  5. Xem xét kết hợp đường ngắn và đường trung để phát triển các phiên bản chiến lược phù hợp với các tình trạng thị trường khác nhau

Tóm tắt

Chiến lược này xây dựng điều kiện mở vị trí bằng cách sử dụng RSI ba, kết hợp với giá trên đường trung bình dài hạn làm bộ lọc xu hướng, để nắm bắt tình huống bán tháo quá mức. Logic của chiến lược đơn giản, dễ thực hiện và tối ưu hóa. Tuy nhiên, chiến lược cũng có rủi ro và thiếu sót như trễ tín hiệu, tần suất giao dịch thấp, chỉ có thể nắm bắt tình huống một bên, cần phải được điều chỉnh và cải thiện liên tục trong ứng dụng thực tế. Bằng cách giới thiệu vị trí dừng lỗ, quản lý, kết hợp với các chỉ số khác, các phương pháp có thể tiếp tục nâng cao tính ổn định và lợi nhuận của chiến lược.

Mã nguồn chiến lược
/*backtest
start: 2023-05-15 00:00:00
end: 2024-05-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//@author Honestcowboy
//
strategy("Triple RSI [Honestcowboy]" )

  
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
// ---------> User Inputs <----------- >>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>

rsiLengthInput = input.int(5, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")

// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
// ---------> VARIABLE CALCULATIONS <----------- >>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
// ---------> CONDITIONALS <----------- >>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>

rule1   = rsi<35
rule2   = rsi<rsi[1] and rsi[1]<rsi[2] and rsi[2]<rsi[3]
rule3   = rsi[3]<60
rule4   = close>ta.sma(close, 200)

longCondition = rule1 and rule2 and rule3 and rule4
closeCondition = rsi>50

// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
// ---------> GRAPHICAL DISPLAY <----------- >>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>

hline(30, title="Long Condition Line")
hline(50, title="Exit Condition Line")
plot(rsi)
plotshape(longCondition ? rsi-3 : na, title="Long Condition", style=shape.triangleup, color=color.lime, location=location.absolute)
plotshape(closeCondition and rsi[1]<50? rsi+3 : na, title="Exit Condition", style=shape.triangledown, color=#e60000, location=location.absolute)

// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>
// ---------> AUTOMATION AND BACKTESTING <----------- >>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >>

if longCondition and strategy.position_size==0
    strategy.entry("LONG", strategy.long)
if closeCondition
    strategy.close("LONG")