Эта стратегия сочетает в себе идентификацию больших свечей и дивергенцию RSI в качестве основных сигналов, включая как первоначальные фиксированные остановки, так и динамические последующие остановки для формирования полной торговой системы, следующей за трендом.
Стратегия состоит из четырех основных компонентов: 1) Определение большой свечи - определение значительного импульса цены путем сравнения текущего тела свечи с предыдущими пятью свечами; 2) Анализ дивергенции RSI - измерение изменений импульса с использованием разницы между 5-периодным быстрым RSI и 14-периодным медленным RSI; 3) Первоначальная остановка - установка фиксированного стоп-лосса на входе, чтобы контролировать начальный риск; 4) Последовательная остановка - активация после прибыли в 200 пунктов, сохраняя динамическое следующее расстояние в 150 пунктов. Стратегия также использует 21-периодную EMA в качестве фильтра тренда, чтобы помочь определить общее направление рынка.
Стратегия создает полную систему, следующую за тенденциями, объединяя большие свечи и дивергенцию RSI, достигая комплексного управления рисками посредством механизма двойной остановки. Она подходит для рынков с четкими тенденциями и более высокой волатильностью, но требует корректировки параметров на основе конкретных рыночных характеристик. Благодаря предложенным направлениям оптимизации стабильность и рентабельность стратегии могут быть дополнительно повышены.
/*backtest start: 2024-12-17 00:00:00 end: 2025-01-16 00:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=6 strategy('[F][IND] - Big Candle Identifier with RSI Divergence and Advanced Stops', shorttitle = '[F][IND] Big Candle RSI Trail', overlay = true) // Inputs for the trailing stop and stop loss trail_start_ticks = input.int(200, "Trailing Start Ticks", tooltip="The number of ticks the price must move in the profitable direction before the trailing stop starts.") trail_distance_ticks = input.int(150, "Trailing Distance Ticks", tooltip="The distance in ticks between the trailing stop and the price once the trailing stop starts.") initial_stop_loss_points = input.int(200, "Initial Stop Loss Points", tooltip="The fixed stop loss applied immediately after entering a trade.") // Tick size based on instrument tick_size = syminfo.mintick // Calculate trailing start and distance in price trail_start_price = trail_start_ticks * tick_size trail_distance_price = trail_distance_ticks * tick_size initial_stop_loss_price = initial_stop_loss_points * tick_size // Identify big candles body0 = math.abs(close[0] - open[0]) body1 = math.abs(close[1] - open[1]) body2 = math.abs(close[2] - open[2]) body3 = math.abs(close[3] - open[3]) body4 = math.abs(close[4] - open[4]) body5 = math.abs(close[5] - open[5]) bullishBigCandle = body0 > body1 and body0 > body2 and body0 > body3 and body0 > body4 and body0 > body5 and open < close bearishBigCandle = body0 > body1 and body0 > body2 and body0 > body3 and body0 > body4 and body0 > body5 and open > close // RSI Divergence rsi_fast = ta.rsi(close, 5) rsi_slow = ta.rsi(close, 14) divergence = rsi_fast - rsi_slow // Trade Entry Logic if bullishBigCandle strategy.entry('Long', strategy.long, stop=low - initial_stop_loss_price) if bearishBigCandle strategy.entry('Short', strategy.short, stop=high + initial_stop_loss_price) // Trailing Stop Logic var float trail_stop = na if strategy.position_size > 0 // Long Position entry_price = strategy.position_avg_price current_profit = close - entry_price if current_profit >= trail_start_price trail_stop := math.max(trail_stop, close - trail_distance_price) strategy.exit("Trailing Stop Long", "Long", stop=trail_stop) if strategy.position_size < 0 // Short Position entry_price = strategy.position_avg_price current_profit = entry_price - close if current_profit >= trail_start_price trail_stop := math.min(trail_stop, close + trail_distance_price) strategy.exit("Trailing Stop Short", "Short", stop=trail_stop) // Plotting Trailing Stop plot(strategy.position_size > 0 ? trail_stop : na, color=color.green, title="Trailing Stop (Long)") plot(strategy.position_size < 0 ? trail_stop : na, color=color.red, title="Trailing Stop (Short)") // Plotting RSI Divergence plot(divergence, color=divergence > 0 ? color.lime : color.red, linewidth=2, title="RSI Divergence") hline(0) // Plotting EMA ema21 = ta.ema(close, 21) plot(ema21, color=color.blue, title="21 EMA")