Dies ist ein Handelsstrategie-System, das den RSI-Momentumsindikator mit dem ATR-Volatilitätsindikator kombiniert. Die Strategie identifiziert potenzielle Handelschancen, indem RSI-Crossovers mit ihrem gleitenden Durchschnitt überwacht werden, während der ATR-Indikator als Volatilitätsfilter verwendet wird, um eine ausreichende Marktvolatilität zu gewährleisten. Die Strategie funktioniert während der europäischen Handelszeiten (8:00-21:00 Prager Zeit) in einem 5-minütigen Zeitrahmen mit festen Take-Profit- und Stop-Loss-Niveaus.
Die Kernlogik beruht auf mehreren Schlüsselkomponenten:
Besondere Handelsregeln:
Die Strategie baut ein relativ vollständiges Handelssystem auf, indem sie RSI- und ATR-Indikatoren kombiniert. Seine Hauptstärken liegen in mehreren Filtermechanismen und einem umfassenden Risikomanagement, obwohl Einschränkungen bestehen. Durch vorgeschlagene Optimierungen zeigt die Strategie Potenzial für eine verbesserte Leistung. Der Schlüssel ist die kontinuierliche Anpassung und Optimierung von Parametern auf der Grundlage der tatsächlichen Handelsbedingungen, um die Anpassungsfähigkeit zu erhalten.
/*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)