Chiến lược đảo ngược RSI là một chiến lược giao dịch định lượng sử dụng chỉ số RSI tương đối mạnh để xác định tình trạng mua bán quá mức, mua và bán tại các điểm đảo ngược. Chiến lược này lấy lợi nhuận bằng cách thiết lập giá trị giảm của khu vực mua và bán quá mức RSI, tháo khi RSI đi vào khu vực mua quá mức và tháo khi RSI đi vào khu vực bán quá mức để nắm bắt sự đảo ngược giá.
Chiến lược này dựa trên các nguyên tắc sau:
RSI có thể phản ánh xem thị trường hiện đang ở trạng thái quá mua hay quá bán. RSI đánh giá mức độ quá mua và quá bán của thị trường hiện tại bằng cách tính tỷ lệ tăng trung bình so với mức giảm trung bình trong một khoảng thời gian, đo cường độ tương đối của động lực đa đầu so với động lực không đầu.
Khi RSI đi vào khu vực mua quá mức (thường được coi là mua quá mức khi RSI lớn hơn 70), điều này cho thấy động lực đa chiều đã rất mạnh, khi đó số lượng thương nhân nắm giữ vị trí lạc quan sẽ nhiều hơn, tiếp tục lạc quan có không gian hạn chế, giá có thể tiếp tục giảm để đảo ngược tình trạng mua quá mức.
Khi RSI đi vào khu vực bán quá mức (thường được coi là bán quá mức khi RSI nhỏ hơn 30), điều này cho thấy động lực đầu không đã rất mạnh, khi đó số lượng thương nhân giữ vị trí giảm sẽ tương đối nhiều, không gian tiếp tục giảm hạn chế, giá có thể tiếp tục tăng lên để đảo ngược tình trạng bán quá mức.
Do đó, bạn có thể đặt RSI ở ngưỡng 90 trong vùng mua quá mức, ngưỡng 10 trong vùng bán quá mức, để thả lỗ khi RSI đi vào vùng mua quá mức và thả nhiều hơn khi RSI đi vào vùng bán quá mức để nắm bắt sự đảo ngược.
Theo đó, chiến lược này có tính logic cốt lõi là:
Tính toán giá trị chỉ số RSI với giá đóng cửa là nguồn đầu vào tính toán của RSI với độ dài 2 chu kỳ.
Khi RSI vượt qua 90, nó cho thấy vào khu vực mua quá mức và mở thêm vị trí. Khi RSI vượt qua 10, nó cho thấy vào khu vực bán quá mức và mở thêm vị trí.
Đối với mỗi giao dịch mở vị trí, thiết lập điểm dừng lỗ dừng lỗ. Hạn chế nhiều đầu là giá thấp nhất, Hạn chế đầu trống là giá cao nhất.
Cài đặt điểm dừng theo dõi cho mỗi giao dịch mở. Nếu RSI tiếp tục đi vào khu vực bán tháo hơn, hãy điều chỉnh điểm dừng theo dõi để làm cho khoảng cách dừng lại thoải mái hơn.
Khi RSI quay trở lại vùng trung lập gần 50, bạn có thể chọn để dừng lỗ.
Nếu không có sự đảo ngược, mở vị trí trên 3 đường K và không đạt được điều kiện dừng lỗ hoặc dừng, hãy buộc cân bằng vị trí để tránh tổn thất lớn hơn do giữ vị trí quá mức.
Chiến lược đảo ngược RSI có một số ưu điểm:
Sử dụng chỉ số RSI để đánh giá tình trạng mua bán quá mức, có thể nắm bắt hiệu quả điểm đảo ngược của thị trường. RSI đánh giá chính xác tình trạng mua bán quá mức, tỷ lệ đảo ngược thành công cao hơn.
Chiến lược giao dịch đảo ngược có lợi thế hệ thống trong việc tiếp tục theo dõi giao dịch. Khi có tình huống mua quá mức, bạn có thể giảm giá kịp thời và bán quá mức để tránh bị mắc kẹt.
Chiến lược tham gia vào cơ chế dừng lỗ có thể kiểm soát hiệu quả tổn thất của một giao dịch. Ngay cả khi đảo ngược không thành công, dừng lỗ có thể kiểm soát tổn thất trong một phạm vi nhất định.
Theo dõi dừng lỗ có thể điều chỉnh khoảng cách dừng lỗ một cách linh hoạt tùy thuộc vào việc giá tiếp tục hoạt động, để đảm bảo hiệu quả của dừng lỗ và cố gắng theo dõi nhiều chênh lệch hơn.
Hạn chế thiệt hại bắt buộc đảm bảo rằng các giao dịch không thể đảo ngược được trong thời gian dài có thể bị xóa và không gây ra tổn thất vô hạn.
Các tham số của RSI có thể được điều chỉnh, có thể điều chỉnh các tham số cho các thị trường khác nhau, tăng khả năng thích ứng của chiến lược.
Chiến lược này cũng có một số rủi ro cần lưu ý:
RSI đảo ngược là một chiến lược giao dịch chỉ số kỹ thuật, kết quả phản hồi có thể có nguy cơ phù hợp với đường cong. Tỷ lệ thành công của sự đảo ngược trong thực tế có thể thấp hơn kết quả phản hồi.
Mặc dù RSI có thể đánh giá được giá quá mua quá bán, nhưng không thể dự đoán được thời điểm chính xác của sự đảo ngược. Có nguy cơ không có sự đảo ngược sau khi áp dụng chiến lược này và giá tiếp tục hoạt động.
Các vùng RSI vượt quá mua bán được xác định bởi chiến lược có thể không hợp lý và nếu được thiết lập sai, có thể dẫn đến một sự đảo ngược bị bỏ lỡ hoặc đảo ngược trước khi phá vỡ đêm qua.
Nếu không đạt được điểm dừng, thì có khả năng quay ngược trở lại, trong trường hợp này, điểm dừng có thể không giao dịch.
Điểm dừng lỗ được thiết lập không hợp lý, quá gần có thể bị dừng lỗ, quá xa có thể mất đi ý nghĩa dừng lỗ.
Các khoản phí giao dịch cũng có thể ảnh hưởng đến lợi nhuận.
Chiến lược đảo ngược RSI cũng có thể được tối ưu hóa theo các khía cạnh sau:
Kiểm tra các tham số RSI khác nhau để tìm ra sự kết hợp tốt nhất, chẳng hạn như thử nghiệm chiều dài RSI, ngưỡng giá bán vượt mức mua, ngưỡng giá bán vượt mức bán.
Thêm nhiều điều kiện lọc để tránh tiếng ồn đảo ngược giả, như xác định vùng có khả năng đảo ngược cao kết hợp với chỉ số MACD.
Tối ưu hóa chiến lược dừng lỗ, chẳng hạn như dừng lỗ theo ATR, thiết lập khoảng cách dừng lỗ theo tỷ lệ dao động.
Tối ưu hóa chiến lược dừng chân, thiết lập dừng chân di động, theo dõi chênh lệch giá lớn hơn.
Tham gia vào mô hình học máy hỗ trợ phán đoán, tăng tỷ lệ thành công của sự đảo ngược.
Kiểm tra dữ liệu của các thị trường và giống khác nhau, điều chỉnh các tham số để có hiệu quả thực tế tốt nhất.
Kết hợp với khối lượng giao dịch, chỉ xem xét tín hiệu đảo ngược khi khối lượng giao dịch lớn hơn.
Nhìn chung, chiến lược đảo ngược RSI sử dụng các chỉ số RSI để xác định tình trạng thị trường quá mua quá bán, giao dịch tại các điểm đảo ngược, có thể đạt được lợi nhuận hệ thống tốt. Tuy nhiên, chiến lược này cũng có một số rủi ro, cần kiểm tra tối ưu hóa các tham số RSI và chiến lược dừng lỗ, hỗ trợ bằng các chỉ số lọc khác để giảm giao dịch sai. Nếu phương pháp đúng, chiến lược đảo ngược RSI có thể trở thành một mô-đun chiến lược hiệu quả trong hệ thống giao dịch định lượng.
/*backtest
start: 2023-11-06 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Copyright (c) 2021-present, RicMos
//study("RSI2 Sell Strategy, overlay=true)
//------------------------------------------USER VARIABLE DEFINITIONS --------------------------------------
var float lots = 0.1
//var float fixed_commission = 0.6 // forex pairs commission value USD per position size two sides
var float fixed_commission = 10 // BTC commission value USD per position size two sides
//var float money = 10000 //forex pairs position size
var float money = 0.3333 //BTC position size
strategy(title="RSI2 Sell Strategy", commission_type=strategy.commission.cash_per_order, calc_on_every_tick =true, commission_value = fixed_commission/2, overlay=true, default_qty_value= lots*100000, initial_capital=1000, currency = "USD", calc_on_order_fills = false)
len = input(2, minval=1, title="RSI Length")
src = input(close, "RSI Source", type = input.source)
upRsi = rma(max(change(src), 0), len)
downRsi = rma(-min(change(src), 0), len)
rsi = downRsi == 0 ? 100 : upRsi == 0 ? 0 : 100 - (100 / (1 + upRsi / downRsi))
var color buyColor = color.blue
var color sellColor = color.red
plotshape(rsi <= 10 ? low : na, title="Arrow Up", style=shape.triangleup, location=location.belowbar, size=size.tiny, color=buyColor)
plotshape(rsi >= 90 ? high : na, title="Arrow Down", style=shape.triangledown, location=location.abovebar, size=size.tiny, color=sellColor)
// long = rsi <= 10
// var float longsl = 0
// var int long_ts_points = 0
// if long
// longsl:= low
// long_ts_points := 200
// if rsi >= 70
// long_ts_points := 100
// else if rsi >= 80
// long_ts_points := 80
// plot (longsl)
// var int barsPassed = 0
// barsPassed := barssince(long)
// if long
// strategy.entry("long", long = strategy.long, qty = 10000, stop = high)
// strategy.exit("slLo", from_entry="long", stop = longsl-0.0002, trail_points = long_ts_points )
// //strategy.close("long", when = rsi[1]>=50 and rsi < 50 , comment = "rsi under 50" )
// strategy.cancel_all(barsPassed > 3 and not long)
short = rsi >= 90
var float shortsl = 0
var int short_ts_points = 0
//var bool stClose = 0
if short
shortsl:= high
short_ts_points := 200
if rsi <= 30
short_ts_points := 100
//stClose :=1
else if rsi <= 20
short_ts_points := 80
//else
//stClose := 0
plot (shortsl)
var int barsPassedSh = 0
barsPassedSh := barssince(short)
if short
strategy.entry("short", long = strategy.short, qty = money, stop = low)
strategy.exit("slSh", from_entry="short", stop = shortsl, trail_points = short_ts_points, trail_offset =20 )
//strategy.close("short", comment="rsi<30", when = stClose)
//strategy.close("long", when = rsi[1]>=50 and rsi < 50 , comment = "rsi under 50" )
strategy.cancel_all(barsPassedSh > 3 and not short)