Chiến lược này chủ yếu sử dụng chỉ số sức mạnh tương đối (RSI) để xác định các điều kiện mua quá mức và bán quá mức trên thị trường, kết hợp với giá trên đường trung bình di chuyển đơn giản 200 ngày (SMA) như một bộ lọc xu hướng, để quyết định có nên tham gia giao dịch hay không. Chiến lược xây dựng các điều kiện nhập cảnh thông qua ba chỉ số RSI. Chỉ khi chỉ số RSI ngắn hạn dưới 35 và cho thấy xu hướng giảm trong ba giai đoạn liên tiếp, trong khi chỉ số RSI giai đoạn thứ ba dưới 60, và giá đóng hiện tại trên đường SMA 200 ngày, nó sẽ đi dài. Điều kiện thoát là khi chỉ số RSI vượt trên 50.
Chiến lược này xây dựng các điều kiện đầu vào thông qua một chỉ số RSI ba lần, kết hợp với giá trên trung bình động dài hạn như một bộ lọc xu hướng, để nắm bắt các thiết lập đảo ngược quá bán. Lý thuyết chiến lược đơn giản và rõ ràng, dễ thực hiện và tối ưu hóa. Tuy nhiên, chiến lược cũng có rủi ro và thiếu sót như độ trễ tín hiệu, tần suất giao dịch thấp và chỉ có thể nắm bắt các chuyển động thị trường đơn phương. Nó cần gỡ lỗi liên tục và cải thiện trong ứng dụng thực tế. Bằng cách giới thiệu dừng lỗ và lấy lợi nhuận, quản lý vị trí, kết hợp với các chỉ số khác và các phương pháp khác, sự ổn định và lợi nhuận của chiến lược có thể được cải thiện hơn nữa.
/*backtest start: 2023-05-15 00:00:00 end: 2024-05-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //@author Honestcowboy // strategy("Triple RSI [Honestcowboy]" ) // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> // ---------> User Inputs <----------- >> // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> rsiLengthInput = input.int(5, minval=1, title="RSI Length", group="RSI Settings") rsiSourceInput = input.source(close, "Source", group="RSI Settings") // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> // ---------> VARIABLE CALCULATIONS <----------- >> // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput) down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> // ---------> CONDITIONALS <----------- >> // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> rule1 = rsi<35 rule2 = rsi<rsi[1] and rsi[1]<rsi[2] and rsi[2]<rsi[3] rule3 = rsi[3]<60 rule4 = close>ta.sma(close, 200) longCondition = rule1 and rule2 and rule3 and rule4 closeCondition = rsi>50 // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> // ---------> GRAPHICAL DISPLAY <----------- >> // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> hline(30, title="Long Condition Line") hline(50, title="Exit Condition Line") plot(rsi) plotshape(longCondition ? rsi-3 : na, title="Long Condition", style=shape.triangleup, color=color.lime, location=location.absolute) plotshape(closeCondition and rsi[1]<50? rsi+3 : na, title="Exit Condition", style=shape.triangledown, color=#e60000, location=location.absolute) // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> // ---------> AUTOMATION AND BACKTESTING <----------- >> // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> if longCondition and strategy.position_size==0 strategy.entry("LONG", strategy.long) if closeCondition strategy.close("LONG")