Chiến lược này thiết kế một hệ thống giao dịch tự động cho dài và ngắn dựa trên chỉ số chỉ số sức mạnh tương đối (RSI). Nó có thể tự động tạo ra tín hiệu dài và ngắn khi RSI đạt mức mua quá mức hoặc bán quá mức và thực hiện giao dịch tự động.
Chiến lược tính toán các giá trị RSI trong phạm vi 0-100 dựa trên giá tăng và giảm trong một khoảng thời gian nhất định. Khi RSI dưới 30, đó là tình trạng bán quá mức. Khi RSI trên 70, đó là tình trạng mua quá mức. Theo quy tắc này, chiến lược tự động đi dài khi RSI đạt đến vùng bán quá mức và đi ngắn khi RSI đạt đến vùng mua quá mức.
Đặc biệt, chiến lược đầu tiên tính toán chỉ số RSI 15 giai đoạn. Khi chỉ số RSI giảm xuống dưới 20, nó được coi là bán quá mức. Tại thời điểm này, khi giá vượt qua mức trung bình động 200 ngày, một vị trí dài được mở. Khi chỉ số RSI tăng trên 80, nó được coi là mua quá mức. Tại thời điểm này, một vị trí ngắn được mở. Sau khi đi dài hoặc ngắn, lấy lợi nhuận và dừng lỗ được đặt để thoát khỏi các vị trí.
Ngoài ra, chiến lược vẽ các đường mốc và nhãn tương ứng khi tín hiệu giá xảy ra để làm cho tín hiệu giao dịch trực quan hơn.
Các biện pháp kiểm soát rủi ro bao gồm: tối ưu hóa các thông số RSI, điều chỉnh ngưỡng mua quá mức và bán quá mức để phù hợp với các sản phẩm khác nhau, thiết lập dừng lỗ hợp lý, kết hợp với các chỉ số xu hướng để tránh giao dịch chống lại xu hướng.
Nói chung đây là một chiến lược giao dịch tự động sử dụng chỉ số RSI để đánh giá các điều kiện mua quá mức và bán quá mức. Nó tạo ra các tín hiệu giao dịch khi RSI đạt đến mức mua quá mức hoặc bán quá mức cực kỳ, và có thể tự động thực hiện giao dịch dài và ngắn. Ý tưởng chiến lược đơn giản và rõ ràng, dễ thực hiện và phù hợp với một chiến lược giao dịch tự động cơ bản. Nhưng chỉ số RSI có một số sự chậm trễ, vì vậy nên tối ưu hóa nó với các chỉ số khác để cải thiện độ chính xác tín hiệu. Ngoài ra, nên chú ý đến kiểm soát rủi ro, tối ưu hóa cơ chế dừng lỗ, phát triển các mô-đun kiểm soát rủi ro để giảm rủi ro giao dịch. Nếu tối ưu hóa và xác minh trong giao dịch trực tiếp, chiến lược có thể trở thành một hệ thống tự động hiệu quả cho giao dịch dài và ngắn.
/*backtest start: 2023-10-22 00:00:00 end: 2023-10-29 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("RSI Improved strategy", overlay=true) higherTF1 = input.timeframe('15' , "Resolution", options = ['5', '15', '1H', 'D', 'W', 'M']) dailyopen = request.security(syminfo.tickerid, higherTF1, close) Reward = input(1600) Risk = input(1600) length = input( 5 ) overSold = input( 30 ) overBought = input( 70 ) EMA = input(200) price = close vrsi = ta.rsi(price, length) RSIlowest = vrsi[1] > vrsi ? true : false RSIhighest = vrsi[1] < vrsi ? true : false //ro = ta.crossunder(vrsi, 20) //ru = ta.crossover(vrsi, 80) co = ta.crossunder(vrsi, overSold) cu = ta.crossunder(vrsi, overBought) plot(ta.ema(close, EMA)) plot(ta.ema(close, 50), color = color.orange) UponEMA = close > ta.ema(close, EMA) ? true : false belowEMA = close < ta.ema(close, EMA) ? true : false //transfer 'float' to 'int' to 'string' r = int(vrsi) value = str.tostring(r) m = int(strategy.openprofit) money = str.tostring(m) if (not na(vrsi)) //when price stand up on 200ema and rsi is at oversold area, open long position // if (co and UponEMA) // strategy.order("Rsi long", strategy.long, 1 , comment = "Rsi long") if(vrsi < 20 and RSIlowest) // line1 = line.new(x1=bar_index, y1=dailyopen, x2=bar_index+1, y2=dailyopen, xloc=xloc.bar_index, style=line.style_solid,extend=extend.right, color=color.aqua, width = 2) // line.delete(line1[1]) // remove the previous line when new bar appears // label1 = label.new(x=bar_index, y=dailyopen,yloc=yloc.belowbar, text = value,textcolor = color.white, color = color.green, style = label.style_label_up) // label.delete(label1[1]) strategy.order("Rsi long", strategy.long, 1 , comment = "Rsi long") strategy.exit("exit", "Rsi long", profit = Reward, loss = Risk, comment = "Rsi long exit") //strategy.close("Rsi short", comment = "Rsi close") if(vrsi > 80 and RSIhighest) // line2 = line.new(x1=bar_index, y1=dailyopen, x2=bar_index+1, y2=dailyopen, xloc=xloc.bar_index, style=line.style_solid,extend=extend.right, color = #e65100, width = 2) // line.delete(line2[1]) // remove the previous line when new bar appears // label2 = label.new(x=bar_index, y=dailyopen,yloc=yloc.abovebar, text = value, textcolor = color.white, color = color.red) // label.delete(label2[1]) strategy.order("Rsi short",strategy.short, 1, comment = "Rsi short ") strategy.exit("exit", "Rsi short", profit = Reward,loss = Risk, comment = "Rsi short exit") // if(UponEMA) // strategy.close("Rsi short", comment = "Rsi short close") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_cross) //plotshape(confirmPH, title="Label",offset = 1,text="Bull",style=shape.labeldown,location=location.abovebar,color=color.green,textcolor=color.green) //when Rsi reaches overbought, draw a Horizontal Ray to close prices, similarly when it comes to oversold.(accomplished) //detects when there is more lower/higher RSI values, adjust horizontal Ray and label to new posistion.(accomplished)