
Chiến lược RSI hai chiều cực nhanh
Chiến lược này là một chiến lược nhanh chóng sử dụng chỉ số RSI để xác định xu hướng giá. Nó có khả năng đồng thời làm nhiều và làm giảm, có thể bắt được giá đường ngắn nhanh hơn.
Chiến lược này sử dụng chỉ số RSI được cải tiến để đánh giá tình trạng quá mua quá bán của giá, kết hợp với tiếng ồn lọc thực thể K-line. Khi RSI ở trong khu vực quá mua hoặc quá bán và khối lượng thực thể K-line lớn hơn 1⁄3 khối lượng trung bình, hãy làm quá nhiều hoặc làm trống.
Chiến lược này đáp ứng nhanh chóng, có thể bắt được xu hướng đường ngắn nhanh hơn; đồng thời lọc thực thể giúp loại bỏ tiếng ồn và tránh bị lừa dối bởi đột phá giả. Chiến lược này áp dụng cho các giống có tỷ lệ dao động cao, có thể thu được lợi nhuận cao hơn.
Chiến lược này rất nhạy cảm với sự thay đổi của giá cả và dễ bị lừa bởi tín hiệu sai lệch trong thị trường; Ngoài ra, thị trường có tỷ lệ biến động cao có thể bị ngừng hoạt động thường xuyên hơn. Bạn có thể nới lỏng mức độ dừng một cách thích hợp và tối ưu hóa các tham số RSI để giảm khả năng tín hiệu sai.
Bạn có thể thử nghiệm các tham số khác nhau của các chỉ số chu kỳ để tối ưu hóa chiến lược và tìm kiếm sự kết hợp tham số tốt nhất. Ngoài ra, bạn cũng có thể xem xét thêm các chỉ số khác như quy tắc giao dịch biển để hỗ trợ các tín hiệu lọc. Việc kết hợp các phương pháp học máy để đào tạo các ngưỡng RSI tốt hơn cũng có thể là một nỗ lực tốt.
Chiến lược này nói chung là một chiến lược đường ngắn nhạy cảm và hiệu quả cao. Với một số tham số và mô hình tối ưu hóa, nó có khả năng tăng cường sự ổn định và lợi nhuận. Chiến lược này đáng để các nhà giao dịch định lượng tiếp tục nghiên cứu và theo dõi.
/*backtest
start: 2023-11-03 00:00:00
end: 2023-12-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.1", shorttitle = "Fast RSI str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Source")
fromyear = input(2018, defval = 2018, 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")
//Fast RSI
fastup = rma(max(change(rsisrc), 0), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
uplimit = 100 - limit
dnlimit = limit
//Body
body = abs(close - open)
emabody = ema(body, 30) / 3
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = bar == -1 and fastrsi < dnlimit and body > emabody
dn = bar == 1 and fastrsi > uplimit and body > emabody
exit = ((strategy.position_size > 0 and fastrsi > dnlimit) or (strategy.position_size < 0 and fastrsi < uplimit)) and body > emabody
//Trading
if up
strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
if dn
strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
strategy.close_all()