
Đây là một hệ thống chiến lược giao dịch kết hợp các chỉ số RSI động và ATR biến động. Chiến lược này xác định các cơ hội giao dịch tiềm năng bằng cách theo dõi RSI và sự giao thoa của nó với đường trung bình di chuyển, đồng thời sử dụng chỉ số ATR như một bộ lọc tỷ lệ biến động để đảm bảo thị trường có đủ biến động. Chiến lược này hoạt động trong giờ giao dịch châu Âu ((thời gian Prague 8:00-21:00), sử dụng chu kỳ 5 phút và đặt mức dừng lỗ cố định.
Logic cốt lõi của chiến lược này dựa trên các thành phần chính sau:
Các quy tắc giao dịch cụ thể như sau:
Chiến lược này kết hợp các chỉ số RSI và ATR để xây dựng một hệ thống giao dịch tương đối hoàn chỉnh. Ưu điểm chính của chiến lược là có nhiều cơ chế lọc và quản lý rủi ro tốt, nhưng cũng có một số hạn chế.
/*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)