Bài viết này giải thích chi tiết về một chiến lược giao dịch định lượng sử dụng các chỉ số RSI nhiều giai đoạn để xác định các điểm đảo ngược.
I. Chiến lược logic
Chiến lược sử dụng 3 nhóm chỉ số RSI với các thông số khác nhau:
Tính toán các giá trị RSI lần lượt cho giai đoạn 2, 7 và 14.
Khi RSI-2 dưới 10, RSI-7 dưới 20, và RSI-14 dưới 30, một đáy được xác định.
Khi RSI-2 trên 90, RSI-7 trên 80 và RSI-14 trên 70, một đỉnh được xác định.
Tạo tín hiệu mua / bán dựa trên sự đồng thuận của RSI.
Đặt các tham số có thể điều chỉnh trước để đồng thuận chỉ số, điều khiển tần số tín hiệu.
Bằng cách phân tích các chỉ số RSI qua các giai đoạn chung, độ chính xác điểm đảo ngược có thể được cải thiện.
II. Lợi thế của Chiến lược
Ưu điểm lớn nhất là sử dụng phân tích RSI nhiều khung thời gian cải thiện việc xác định các điểm chính và lọc ra các tín hiệu sai.
Một lợi thế khác là tính linh hoạt để điều chỉnh các tham số đồng thuận và thích nghi với môi trường thị trường khác nhau.
Cuối cùng, các kết hợp RSI cũng cung cấp nhiều tùy chọn điều chỉnh hơn.
III. Các rủi ro tiềm ẩn
Tuy nhiên, có những rủi ro sau đây:
Thứ nhất, chính chỉ số RSI có sự chậm trễ vốn có trong việc xác định sự đảo ngược.
Thứ hai, nhiều chỉ số đưa ra sự mơ hồ của tín hiệu đòi hỏi các quy tắc rõ ràng.
Cuối cùng, các giao dịch đảo ngược có tỷ lệ thất bại đòi hỏi sự chuẩn bị tâm lý.
IV. Tóm tắt
Tóm lại, bài viết này đã giải thích một chiến lược định lượng để xác định sự đảo ngược dựa trên phân tích RSI đa giai đoạn. Nó cải thiện việc nhận ra các điểm chuyển đổi thị trường bằng cách đánh giá sự đồng thuận của RSI. Nhưng các rủi ro như chậm trễ và tín hiệu sai cần phải được quản lý. Nhìn chung nó cung cấp một cách tiếp cận tối ưu hóa chiến lược RSI linh hoạt.
/*backtest start: 2023-09-06 00:00:00 end: 2023-09-13 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Triple RSI Top/Bottom v1.1", shorttitle = "3RSI Top/Bottom 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") leverage = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage") indi = input(3, defval = 3, minval = 1, maxval = 3, title = "Indicators") accuracy = input(3, defval = 3, minval = 1, maxval = 10, title = "accuracy") 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-2 fastup = rma(max(change(close), 0), 2) fastdown = rma(-min(change(close), 0), 2) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //RSI-7 middleup = rma(max(change(close), 0), 7) middledown = rma(-min(change(close), 0), 7) middlersi = middledown == 0 ? 100 : middleup == 0 ? 0 : 100 - (100 / (1 + middleup / middledown)) //RSI-14 slowup = rma(max(change(close), 0), 14) slowdown = rma(-min(change(close), 0), 14) slowrsi = slowdown == 0 ? 100 : slowup == 0 ? 0 : 100 - (100 / (1 + slowup / slowdown)) //Body body = abs(close - open) abody = sma(body, 10) //Signals acc = 10 - accuracy signalup1 = fastrsi < (5 + acc) ? 1 : 0 signalup2 = middlersi < (10 + acc * 2) ? 1 : 0 signalup3 = slowrsi < (15 + acc * 3) ? 1 : 0 signaldn1 = fastrsi > (95 - acc) ? 1 : 0 signaldn2 = middlersi > (90 - acc * 2) ? 1 : 0 signaldn3 = slowrsi > (85 - acc * 3) ? 1 : 0 up = signalup1 + signalup2 + signalup3 >= indi dn = signaldn1 + signaldn2 + signaldn3 >= indi exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 3 //Trading lot = strategy.position_size == 0 ? strategy.equity / close * leverage : lot[1] if up if strategy.position_size < 0 strategy.close_all() strategy.entry("Bottom", strategy.long, needlong == false ? 0 : lot) if dn if strategy.position_size > 0 strategy.close_all() strategy.entry("Top", strategy.short, needshort == false ? 0 : lot) if time > timestamp(toyear, tomonth, today, 23, 59) or exit strategy.close_all()