Chiến lược này là một hệ thống giao dịch đảo ngược phạm vi năng động dựa trên chỉ số RSI, nắm bắt các bước ngoặt của thị trường thông qua các khu vực mua quá mức / bán quá mức có thể điều chỉnh kết hợp với các tham số độ nhạy hội tụ / khác biệt. Chiến lược sử dụng một số lượng hợp đồng cố định để giao dịch và hoạt động trong một khung thời gian kiểm tra ngược cụ thể.
Chiến lược này sử dụng chỉ số RSI 14 giai đoạn làm chỉ số cốt lõi của nó, thiết lập 80 và 30 như mức chuẩn mua quá mức và bán quá mức. Bằng cách giới thiệu một tham số độ nhạy hội tụ / phân kỳ (đặt ở 3.0), nó thêm khả năng điều chỉnh năng động vào chiến lược RSI truyền thống. Các vị trí dài được thiết lập khi RSI vượt quá mức mua quá mức và đóng khi RSI giảm xuống dưới mức bán quá mức. Tương tự, các vị trí dài được thiết lập khi RSI giảm xuống dưới mức bán quá mức và đóng khi RSI vượt quá mức mua quá mức. Mỗi giao dịch sử dụng một hợp đồng cố định 10 để đảm bảo sự ổn định trong việc sử dụng vốn.
Đây là một chiến lược đảo ngược phạm vi năng động dựa trên chỉ số RSI, đạt được một hệ thống giao dịch tương đối hoàn chỉnh thông qua các thiết lập tham số linh hoạt và các quy tắc giao dịch rõ ràng. Những lợi thế chính của chiến lược nằm trong khả năng điều chỉnh năng động và kiểm soát rủi ro rõ ràng, trong khi cần chú ý đến các rủi ro tiềm ẩn trong các thị trường biến động và xu hướng. Thông qua các biện pháp tối ưu hóa như điều chỉnh biến động và lọc xu hướng, chiến lược có chỗ cải thiện hơn nữa. Nhìn chung, đây là một khuôn khổ chiến lược giao dịch định lượng thực tế phù hợp cho nghiên cứu chuyên sâu và xác minh thực tế.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-11 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("RSI Options Strategy", overlay=true) // RSI settings rsiLength = input(14, title="RSI Length") rsiOverbought = input(80, title="Overbought Level") rsiOversold = input(30, title="Oversold Level") rsiSource = input(close, title="RSI Source") rsi = ta.rsi(rsiSource, rsiLength) // Convergence/Divergence Input convergenceLevel = input(3.0, title="Convergence/Divergence Sensitivity") // Order size (5 contracts) contracts = 10 // Date Range for Backtesting startDate = timestamp("2024-09-10 00:00") endDate = timestamp("2024-11-09 23:59") // Limit trades to the backtesting period inDateRange = true // RSI buy/sell conditions with convergence/divergence sensitivity buySignalOverbought = ta.crossover(rsi, rsiOverbought - convergenceLevel) sellSignalOversold = ta.crossunder(rsi, rsiOversold + convergenceLevel) buySignalOversold = ta.crossunder(rsi, rsiOversold - convergenceLevel) sellSignalOverbought = ta.crossover(rsi, rsiOverbought + convergenceLevel) // Execute trades only within the specified date range if (inDateRange) // Buy when RSI crosses above 80 (overbought) if (buySignalOverbought) strategy.entry("Buy Overbought", strategy.long, qty=contracts) // Sell when RSI crosses below 30 (oversold) if (sellSignalOversold) strategy.close("Buy Overbought") // Buy when RSI crosses below 30 (oversold) if (buySignalOversold) strategy.entry("Buy Oversold", strategy.long, qty=contracts) // Sell when RSI crosses above 80 (overbought) if (sellSignalOverbought) strategy.close("Buy Oversold") // Plot the RSI for visualization plot(rsi, color=color.blue, title="RSI") hline(rsiOverbought, "Overbought", color=color.red) hline(rsiOversold, "Oversold", color=color.green)