Đây là một hệ thống chiến lược giao dịch kết hợp chỉ số động lực RSI với chỉ số biến động ATR. Chiến lược xác định các cơ hội giao dịch tiềm năng bằng cách theo dõi các chéo RSI với đường trung bình động của nó trong khi sử dụng chỉ số ATR như một bộ lọc biến động để đảm bảo biến động thị trường đủ. Chiến lược hoạt động trong giờ giao dịch châu Âu (8:00-21:00 giờ Praha) trong một khung thời gian 5 phút với mức lợi nhuận cố định và mức dừng lỗ.
Logic cốt lõi dựa trên một số thành phần chính: Chỉ số RSI xác định các khu vực bán quá mức (dưới 45) và mua quá mức (trên 55) 2. RSI chéo với các tín hiệu nhập cảnh kích hoạt trung bình động của nó 3. Chỉ số ATR lọc môi trường biến động thấp, chỉ cho phép giao dịch trên ngưỡng 4. Thời gian giao dịch hạn chế 8:00-21:00 giờ Prague 5. Chiến lược dừng lỗ và lấy lợi nhuận cố định được đặt ở mức 5000 điểm
Các quy tắc giao dịch cụ thể: - Các điều kiện dài: RSI vượt trên MA dưới 45, đáp ứng các tiêu chí thời gian và biến động - Điều kiện ngắn: RSI vượt dưới MA trên 55, đáp ứng các tiêu chí thời gian và biến động - Điều kiện thoát: Tự động đóng cửa ở mức lấy lợi nhuận hoặc dừng lỗ
Chiến lược này xây dựng một hệ thống giao dịch tương đối hoàn chỉnh bằng cách kết hợp các chỉ số RSI và ATR. Sức mạnh chính của nó nằm trong nhiều cơ chế lọc và quản lý rủi ro toàn diện, mặc dù có những hạn chế. Thông qua các tối ưu hóa được đề xuất, chiến lược cho thấy tiềm năng cải thiện hiệu suất.
/*backtest start: 2024-11-10 00:00:00 end: 2024-12-09 08:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Custom RSI + ATR Strategy", overlay=true) // === Настройки индикаторов === rsi_length = input.int(14, minval=1, title="RSI Length") rsi_ma_length = input.int(10, minval=1, title="RSI MA Length") atr_length = input.int(14, minval=1, title="ATR Length") atr_threshold = input.float(0.5, minval=0.1, title="ATR Threshold") // === Параметры стоп-лосса и тейк-профита === stop_loss_ticks = input.int(5000, title="Stop Loss Ticks") take_profit_ticks = input.int(5000, title="Take Profit Ticks") // === Получение значений индикаторов === rsi = ta.rsi(close, rsi_length) rsi_ma = ta.sma(rsi, rsi_ma_length) atr_value = ta.atr(atr_length) // === Время для открытия сделок === start_time = timestamp("Europe/Prague", year, month, dayofmonth, 8, 0) end_time = timestamp("Europe/Prague", year, month, dayofmonth, 21, 0) in_trading_hours = (time >= start_time and time <= end_time) // === Условие по волатильности === volatility_filter = atr_value > atr_threshold // === Условия для лонгов === long_condition = ta.crossover(rsi, rsi_ma) and rsi < 45 and in_trading_hours and volatility_filter if (long_condition) strategy.entry("Long", strategy.long) strategy.exit("Take Profit/Stop Loss", "Long", stop=low - stop_loss_ticks * syminfo.mintick, limit=high + take_profit_ticks * syminfo.mintick) // === Условия для шортов === short_condition = ta.crossunder(rsi, rsi_ma) and rsi > 55 and in_trading_hours and volatility_filter if (short_condition) strategy.entry("Short", strategy.short) strategy.exit("Take Profit/Stop Loss", "Short", stop=high + stop_loss_ticks * syminfo.mintick, limit=low - take_profit_ticks * syminfo.mintick) // === Отображение индикаторов на графике === plot(rsi, color=color.blue, title="RSI") plot(rsi_ma, color=color.red, title="RSI MA") hline(45, "RSI 45", color=color.green) hline(55, "RSI 55", color=color.red) plot(atr_value, color=color.orange, title="ATR", linewidth=2) hline(atr_threshold, "ATR Threshold", color=color.purple)