
Chiến lược tập hợp nhiều chỉ số RSI là một chiến lược sử dụng nhiều chỉ số cường độ tương đối (RSI) để giao dịch khi chọn cổ phiếu. Chiến lược này đồng thời sử dụng các chỉ số RSI với 1, 2, 3, 4 hoặc 5 chu kỳ khác nhau, tạo ra tín hiệu mua khi bất kỳ chỉ số RSI nào thấp hơn giới hạn được thiết lập và tạo ra tín hiệu bán khi tất cả các chỉ số RSI đều cao hơn giới hạn của mình, để thực hiện các mục nhập và lối ra theo thời gian của cổ phiếu.
Lập luận cốt lõi của chiến lược này là đồng thời theo dõi 1, 2, 3, 4, 5 chỉ số RSI của các chu kỳ khác nhau, bao gồm RSI chu kỳ 4, chu kỳ 7, chu kỳ 14, chu kỳ 21 và chu kỳ 28. Các chỉ số RSI 5 lần này đặt các giới hạn khác nhau, bất kỳ chỉ số RSI nào thấp hơn giới hạn tương ứng sẽ tạo ra tín hiệu mua.
Ví dụ, khi chỉ số RSI 4 chu kỳ được đặt ở giới hạn 15, một tín hiệu mua sẽ được tạo ra khi chỉ số RSI 4 chu kỳ thấp hơn 15. Chiến lược sẽ đồng thời phát hiện xem chỉ số RSI của các chu kỳ khác có thấp hơn giới hạn tương ứng hay không, và nếu có, nó cũng sẽ tạo ra một tín hiệu mua.
Khi tất cả 5 chỉ số RSI đều vượt quá giới hạn của mình, sẽ có tín hiệu bán ra, kết thúc lợi nhuận. Bằng cách tổng hợp các tín hiệu của nhiều chỉ số chu kỳ, bạn có thể cải thiện độ chính xác của các mục.
Chiến lược này sử dụng 5 chỉ số RSI khác nhau cùng một lúc, tạo ra tín hiệu mua khi bất kỳ RSI nào thấp hơn giới hạn. Điều này có thể làm tăng độ tin cậy của tín hiệu và tránh các tín hiệu sai do chỉ số đơn gây ra.
Sử dụng chỉ số RSI 1, 2, 3, 4 và 5 chu kỳ, có thể thích ứng với biến động của cổ phiếu trong các chu kỳ khác nhau. Ví dụ, 28 chu kỳ RSI phù hợp với giao dịch dài hạn, 4 chu kỳ RSI phù hợp với giao dịch ngắn hạn. Điều này đảm bảo chiến lược có thể hoạt động tốt trong nhiều tình huống thị trường.
Tên biến và cấu trúc mã của chiến lược rất rõ ràng, quá trình tính toán các chỉ số và tín hiệu khác nhau được làm rõ. Điều này làm cho chiến lược dễ dàng hiểu, sửa đổi và tối ưu hóa. Đây là một lợi thế rất quan trọng của chiến lược định lượng.
Chiến lược này chủ yếu dựa vào việc tạo ra tín hiệu mua bán quá mức, hiệu quả của nó sẽ bị chiết khấu trong tình huống xu hướng tăng hoặc giảm một bên. Đây là vấn đề phổ biến trong các chiến lược sử dụng chỉ số đảo ngược.
Chiến lược bao gồm nhiều chỉ số và tham số, điều này gây ra khó khăn lớn cho việc tối ưu hóa tham số. Sự kết hợp tham số không hợp lý có thể làm giảm hiệu quả của chiến lược. Điều này đòi hỏi phải sử dụng công cụ tối ưu hóa để tìm tham số tối ưu nhất.
Do sử dụng nhiều chỉ số chu kỳ, các chiến lược có thể được chuyển đổi nhiều lần, dẫn đến chi phí giao dịch cao hơn và rủi ro trượt.
Bạn có thể tham gia các chỉ số xu hướng như MA hoặc BOLL để tránh giảm giá trong một tình huống đơn phương. Ví dụ, chỉ tham gia khi chỉ số xu hướng cũng đồng ý đảo ngược.
Cố gắng giảm số lượng chỉ số RSI được sử dụng, giảm sự khó khăn trong việc tối ưu hóa các tham số. Các thí nghiệm cho thấy rằng 2-3 kết hợp chỉ số có thể đạt được hiệu quả tốt.
Sử dụng các phương pháp như tối ưu hóa bước dài, tối ưu hóa ngẫu nhiên, tìm kiếm phạm vi và sự kết hợp tốt nhất của các tham số RSI để tối đa hóa hiệu suất chiến lược.
Chiến lược tập hợp nhiều chỉ số RSI thông qua các tín hiệu của RSI nhiều chu kỳ, cải thiện độ chính xác của các mục, thực hiện giao dịch thời gian của cổ phiếu. Nó có lợi thế trong việc sử dụng nhiều chỉ số, nhưng cũng có những vấn đề về sự thất bại một chiều, khó tối ưu hóa. Bằng cách thêm các chỉ số xu hướng, giảm số lượng chỉ số, tối ưu hóa tham số, các phương pháp có thể cải thiện hơn nữa chiến lược Robustness.
/*backtest
start: 2022-12-26 00:00:00
end: 2024-01-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Symphony v1.0", shorttitle = "Symphony 1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 20)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
usersi1 = input(true, defval = true, title = "Use RSI 1")
rsiperiod1 = input(4, defval = 4, minval = 2, maxval = 100, title = "RSI 1 Period")
rsilimit1 = input(15, defval = 15, minval = 2, maxval = 50, title = "RSI 1 Limit")
usersi2 = input(true, defval = true, title = "Use RSI 2")
rsiperiod2 = input(7, defval = 7, minval = 2, maxval = 100, title = "RSI 2 Period")
rsilimit2 = input(20, defval = 20, minval = 2, maxval = 50, title = "RSI 2 Limit")
usersi3 = input(true, defval = true, title = "Use RSI 3")
rsiperiod3 = input(14, defval = 14, minval = 2, maxval = 100, title = "RSI 3 Period")
rsilimit3 = input(25, defval = 25, minval = 2, maxval = 50, title = "RSI 3 Limit")
usersi4 = input(true, defval = true, title = "Use RSI 4")
rsiperiod4 = input(21, defval = 21, minval = 2, maxval = 100, title = "RSI 4 Period")
rsilimit4 = input(30, defval = 30, minval = 2, maxval = 50, title = "RSI 4 Limit")
usersi5 = input(true, defval = true, title = "Use RSI 5")
rsiperiod5 = input(28, defval = 28, minval = 2, maxval = 100, title = "RSI 5 Period")
rsilimit5 = input(35, defval = 35, minval = 2, maxval = 50, title = "RSI 5 Limit")
cf = input(false, defval = false, title = "Use color filter")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From Day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To Day")
//RSI
rsi1 = rsi(close, rsiperiod1)
rsi2 = rsi(close, rsiperiod2)
rsi3 = rsi(close, rsiperiod3)
rsi4 = rsi(close, rsiperiod4)
rsi5 = rsi(close, rsiperiod5)
//Signals
up1 = rsi1 < rsilimit1 and usersi1
up2 = rsi2 < rsilimit2 and usersi2
up3 = rsi3 < rsilimit3 and usersi3
up4 = rsi4 < rsilimit4 and usersi4
up5 = rsi5 < rsilimit5 and usersi5
up = up1 or up2 or up3 or up4 or up5
exit = rsi1 > rsilimit1 and rsi2 > rsilimit2 and rsi3 > rsilimit3 and rsi4 > rsilimit4 and rsi5 > rsilimit5
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
//Background
col = up ? lime : na
bgcolor(col, transp = 0)
//Trading
if up and (close < open or cf == false)
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if exit
strategy.close_all()