Il s'agit d'un système de stratégie de trading qui combine l'indicateur de dynamique RSI avec l'indicateur de volatilité ATR. La stratégie identifie les opportunités de trading potentielles en surveillant les croisements RSI avec sa moyenne mobile tout en utilisant l'indicateur ATR comme filtre de volatilité pour assurer une volatilité suffisante du marché.
La logique de base est basée sur plusieurs éléments clés: 1. L'indicateur RSI identifie les régions survendues (inférieures à 45) et surachetées (supérieures à 55) 2. croisements RSI avec ses signaux d'entrée de déclencheur moyenne mobile 3. L'indicateur ATR filtre les environnements à faible volatilité, ne permettant que des transactions supérieures au seuil Les heures de négociation sont limitées à 8h00-21h00 heure de Prague. 5. Stratégie fixe de stop-loss et de prise de profit fixée à 5000 points
Règles commerciales spécifiques: - Conditions longues: le RSI dépasse son MA inférieur à 45, répondant aux critères de temps et de volatilité - Conditions courtes: l'indice de volatilité s'écrase en dessous de son MA supérieur à 55, répondant aux critères de temps et de volatilité - Conditions de sortie: clôture automatique aux niveaux de prise de profit ou de stop-loss
La stratégie construit un système de trading relativement complet en combinant les indicateurs RSI et ATR. Ses principales forces résident dans les mécanismes de filtrage multiples et la gestion complète des risques, bien que des limitations existent.
/*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)