이 전략은 RSI 모멘텀 지표와 ATR 변동성 지표를 결합한 거래 전략이다. 이 전략은 충분한 시장 변동성을 보장하기 위해 ATR 지표를 변동성 필터로 사용하여 이동 평균과 함께 RSI 크로스오버를 모니터링함으로써 잠재적 인 거래 기회를 식별합니다. 이 전략은 유럽 거래 시간 (8:00-21:00 프라하 시간) 에 고정된 영업 및 스톱 로스 수준으로 5 분 시간 프레임에서 작동합니다.
핵심 논리는 몇 가지 핵심 요소에 기반합니다.
특정 거래 규칙:
이 전략은 RSI와 ATR 지표를 결합하여 비교적 완전한 거래 시스템을 구축합니다. 주요 강점은 여러 필터링 메커니즘과 포괄적 인 위험 관리에 있습니다. 제한 사항이 있지만 제안된 최적화를 통해 전략은 향상된 성능을위한 잠재력을 보여줍니다. 열쇠는 적응력을 유지하기 위해 실제 거래 조건에 기반한 지속적인 매개 변수 조정 및 최적화입니다.
/*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)