Este é um sistema de estratégia de negociação que combina o indicador de impulso do RSI com o indicador de volatilidade ATR. A estratégia identifica oportunidades de negociação potenciais monitorando os crossovers do RSI com sua média móvel, enquanto usa o indicador ATR como um filtro de volatilidade para garantir a volatilidade suficiente do mercado. A estratégia opera durante as horas de negociação europeias (8:00-21:00 hora de Praga) em um prazo de 5 minutos com níveis fixos de take-profit e stop-loss.
A lógica do núcleo baseia-se em vários componentes-chave:
Regras comerciais específicas:
A estratégia constrói um sistema de negociação relativamente completo, combinando os indicadores RSI e ATR. Seus principais pontos fortes estão em múltiplos mecanismos de filtragem e gerenciamento de risco abrangente, embora existam limitações. Através das otimizações propostas, a estratégia mostra potencial para melhorar o desempenho.
/*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)