
Es handelt sich um ein Trading-Strategie-System, das den RSI-Dynamik- und den ATR-Wirbel-Indikator kombiniert. Die Strategie identifiziert potenzielle Handelschancen, indem sie die Kreuzung des RSI mit seinem Moving Average überwacht, während die ATR-Indikator als Fluktuationsfilter verwendet wird, um sicherzustellen, dass der Markt ausreichend Volatilität aufweist. Die Strategie läuft während der europäischen Handelszeit ((Prager Zeit 8:00-21:00 Uhr) und verwendet einen 5-Minuten-Zeitraum und setzt eine feste Stop-Loss-Ebene ein.
Die Kernlogik der Strategie basiert auf den folgenden Schlüsselkomponenten:
Die spezifischen Regeln für den Handel lauten:
Die Strategie baut durch die Kombination von RSI und ATR ein relativ vollständiges Handelssystem auf. Die Hauptvorteile der Strategie liegen in der Vielzahl von Filtermechanismen und einem ausgefeilten Risikomanagement, aber es gibt auch einige Einschränkungen. Durch die vorgeschlagene Optimierungsrichtung ist die Strategie berechtigt, eine bessere Leistung zu erzielen.
/*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)