Chiến lược này là một hệ thống giao dịch chồng chéo các chỉ số đa cấp dựa trên Chỉ số Sức mạnh Tương đối (RSI). Hoạt động trong một cửa sổ giao dịch cụ thể, nó xác định các cơ hội giao dịch thông qua các tín hiệu mua quá nhiều và bán quá nhiều của RSI, kết hợp với một cơ chế điều chỉnh vị trí năng động sử dụng cách tiếp cận nhập khẩu quy mô trong các biến động thị trường bất lợi. Chiến lược thực hiện lấy lợi nhuận dựa trên mục tiêu giá nhập khẩu trung bình.
Chiến lược hoạt động dựa trên các thành phần cốt lõi sau: 1. Tính toán RSI sử dụng 14 giai đoạn tiêu chuẩn với giá đóng như dữ liệu nguồn 2. cửa sổ giao dịch được kiểm soát giữa 2-4 giờ, điều chỉnh dựa trên các đặc điểm của thị trường 3. Các tín hiệu đầu vào dựa trên chỉ số RSI dưới 30 (được bán quá mức) và trên 70 (được mua quá mức) 4. Xây dựng vị trí bao gồm vị trí ban đầu và mức độ điều chỉnh năng động 5. Cơ chế mở rộng kích hoạt khi giá di chuyển bất lợi 1 điểm 6. Lợi nhuận được thiết lập ở mức 1,5 điểm so với giá nhập cảnh trung bình
Chiến lược hình thành một hệ thống giao dịch tương đối hoàn chỉnh thông qua sự kết hợp của các chỉ số RSI và cơ chế nhập quy mô. Những lợi thế cốt lõi của nó nằm trong cơ chế lọc tín hiệu đa cấp và cách tiếp cận quản lý vị trí linh hoạt, trong khi cần chú ý đến rủi ro thị trường xu hướng và các vấn đề tối ưu hóa tham số. Hiệu suất tổng thể của chiến lược có thể được cải thiện hơn nữa thông qua các cải tiến như thêm các bộ lọc xu hướng và tối ưu hóa các cơ chế dừng lỗ.
/*backtest start: 2024-12-10 00:00:00 end: 2025-01-08 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=6 strategy("TonyM RSI", overlay=true) // Input Settings rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings") rsiSourceInput = input.source(close, "Source", group="RSI Settings") startHour = input.int(2, "Start Hour", minval=0, maxval=23, group="Trading Window") endHour = input.int(4, "End Hour", minval=0, maxval=23, group="Trading Window") // RSI Calculation change = ta.change(rsiSourceInput) up = ta.rma(math.max(change, 0), rsiLengthInput) down = ta.rma(-math.min(change, 0), rsiLengthInput) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) // Time Filter inTradingWindow = (hour >= startHour and hour < endHour) // Strategy Settings buyLevel = 30 sellLevel = 70 scaleDistance = 1.0 // Distance in points to add to the position takeProfitPoints = 1.5 // Profit target from average price initialQty = 1 // Initial trade size scalingQty = 1 // Additional trade size for scaling // Trade Logic if inTradingWindow // Entry Logic if rsi <= buyLevel and strategy.position_size == 0 strategy.entry("Buy", strategy.long, qty=initialQty) if rsi >= sellLevel and strategy.position_size == 0 strategy.entry("Sell", strategy.short, qty=initialQty) // Scaling Logic if strategy.position_size > 0 and close <= strategy.position_avg_price - scaleDistance strategy.entry("Scale Buy", strategy.long, qty=scalingQty) if strategy.position_size < 0 and close >= strategy.position_avg_price + scaleDistance strategy.entry("Scale Sell", strategy.short, qty=scalingQty) // Exit Logic (based on average price) if strategy.position_size > 0 strategy.exit("Take Profit Long", "Buy", limit=strategy.position_avg_price + takeProfitPoints) if strategy.position_size < 0 strategy.exit("Take Profit Short", "Sell", limit=strategy.position_avg_price - takeProfitPoints) // Plot RSI plot(rsi, "RSI", color=color.blue, linewidth=1) rsiUpperBand = hline(70, "RSI Upper Band", color=color.red) rsiLowerBand = hline(30, "RSI Lower Band", color=color.green) fill(rsiUpperBand, rsiLowerBand, color=color.new(color.gray, 90))