Đây là một chiến lược giao dịch ngắn hạn dựa trên chỉ số chỉ số sức mạnh tương đối (RSI). Nó sử dụng RSI để xác định mức mua quá mức và bán quá mức và kết hợp lọc nến để tránh tín hiệu sai, nhập các vị trí dài và ngắn tại các điểm đảo ngược. Chiến lược nhằm mục đích nắm bắt cơ hội đảo ngược trung bình sau các điều kiện mua quá mức hoặc bán quá mức cực kỳ.
Đầu tiên, chỉ số RSI được tính dựa trên giá đóng với một khoảng thời gian được thiết lập là 7. Mức mua quá mức được thiết lập ở 70 và mức bán quá mức được thiết lập ở 30.
Để lọc ra các tín hiệu sai, kích thước cơ thể nến cần phải mở rộng lên 1-3 lần phạm vi bình thường khi một tín hiệu giao dịch được kích hoạt.
Khi RSI ở dưới 30 trong 5 thanh liên tiếp, một tín hiệu dài được tạo ra. Nếu nến tiếp theo cho thấy một cơ thể tăng mở rộng hơn 4 lần, một vị trí dài sẽ được thực hiện. Khi RSI ở trên 70 trong 5 thanh liên tiếp, một tín hiệu ngắn được tạo ra. Nếu nến tiếp theo cho thấy một cơ thể giảm mở rộng hơn 4 lần, một vị trí ngắn sẽ được thực hiện.
Để khóa lợi nhuận, các vị trí sẽ được đóng khi hướng nến hiện tại phù hợp với hướng vị trí và cơ thể mở rộng 2 lần.
Chỉ số RSI là tốt trong việc xác định các điều kiện mua quá mức và bán quá mức. Khi một cổ phiếu đạt đến mức độ cực đoan, có khả năng cao của một sự rút lui, và mức độ cực đoan thường ngụ ý một sự đảo ngược sắp xảy ra. Chiến lược này có thể nắm bắt những cơ hội như vậy tại các điểm chuyển đổi.
Giao dịch chỉ dựa trên các tín hiệu RSI có thể dẫn đến nhiều tín hiệu sai. Chiến lược này kết hợp sự mở rộng cơ thể nến như một bộ lọc, nhập vào các vị trí khi một cơ thể mở rộng xuất hiện xung quanh các điểm đảo ngược, tránh những cú đánh từ các thị trường hỗn loạn.
Yêu cầu 1-5 thanh RSI liên tiếp trong vùng mua quá mức hoặc bán quá mức hoạt động như một sự xác nhận, tránh các tín hiệu sai từ các thanh lệch thỉnh thoảng và cải thiện độ tin cậy tín hiệu.
Tỷ lệ nhân mở rộng cơ thể có thể được điều chỉnh cho các sản phẩm khác nhau. Đối với các cổ phiếu có dao động lớn, các tiêu chí có thể được nới lỏng, trong khi đối với các cổ phiếu có phạm vi hẹp, nó có thể được thắt chặt. Điều này cho phép điều chỉnh linh hoạt cho các sản phẩm giao dịch khác nhau.
Các thiết lập tham số có một số hạn chế vốn có. Các sản phẩm và khoảng thời gian khác nhau có thể yêu cầu điều chỉnh tham số. Sử dụng các thiết lập cố định có thể dẫn đến vấn đề quá phù hợp.
Vì vậy, độ chính xác của việc bắt đáy hoặc đỉnh chính xác thường không cao lắm.
Trong các thị trường dao động, chỉ số RSI có thể kích hoạt các tín hiệu mua và bán thường xuyên, dẫn đến thời gian giữ dài.
Là một chiến lược giao dịch ngắn hạn, nên kết hợp các chiến lược kích thước vị trí thích hợp, chẳng hạn như chuyển dừng lỗ, lấy lợi nhuận, vv, để khóa lợi nhuận và kiểm soát rủi ro.
Các kết hợp khác nhau của các thông số RSI có thể được thử nghiệm, chẳng hạn như thời gian, mức mua quá mức / bán quá mức và bộ lọc nến, để tìm các thông số tối ưu cho các sản phẩm khác nhau.
Di chuyển hoặc phần trăm dừng lỗ có thể được thêm vào khóa trong lợi nhuận. hoặc đặt dừng lỗ dựa trên giá trị ATR hoặc kênh Donchain vv
Các điều kiện dựa trên MACD, KDJ và các chỉ số khác có thể được thêm vào để tránh các tín hiệu sai từ các đột phá không hợp lệ.
Sử dụng đường trung bình động để đánh giá xu hướng thiên vị. Chỉ xem xét các tín hiệu giao dịch phù hợp với xu hướng. Chiến lược có thể được tạm dừng trong các thị trường giới hạn phạm vi. Các chỉ số sức mạnh xu hướng cũng có thể được sử dụng làm bộ lọc.
Tóm lại, chiến lược đảo ngược RSI này là một chiến lược giao dịch ngắn hạn điển hình với những ưu và nhược điểm riêng của nó. Ưu điểm chính nằm trong việc nắm bắt sự rút lui sau khi cực đoan trong khi rủi ro chính đến từ độ chính xác tín hiệu thấp và thời gian giữ dài trong phạm vi. Chúng ta có thể cải thiện chiến lược bằng cách điều chỉnh các tham số, thêm bộ lọc, tối ưu hóa dừng, vv, để thích nghi với nhiều sản phẩm và điều kiện thị trường hơn và đạt được kết quả ổn định hơn.
/*backtest start: 2022-11-08 00:00:00 end: 2023-11-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "Noro's FRSI Strategy v1.21", shorttitle = "FRSI str 1.21", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_type = strategy.commission.percent, commission_value = 0.0) //Settings 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 Price") rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars") sps = 0 fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2038, defval = 2018, 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)) //Limits bar = close > open ? 1 : close < open ? -1 : 0 uplimit = 100 - limit dnlimit = limit //RSI Bars ur = fastrsi > uplimit dr = fastrsi < dnlimit uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0 dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0 //Body body = abs(close - open) emabody = ema(body, 30) //Signals up = bar == -1 and sps == 0 and dnrsi and body > emabody / 4 dn = bar == 1 and sps == 0 and uprsi and body > emabody / 4 exit = bar == 1 and fastrsi > dnlimit and body > emabody / 2 //Trading if up strategy.entry("Long", strategy.long, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))) sps := 1 if time > timestamp(toyear, tomonth, today, 00, 00) or exit strategy.close_all() sps := 0