Esta estrategia combina la identificación de velas grandes y la divergencia del RSI como señales primarias, incorporando tanto paradas fijas iniciales como paradas de seguimiento dinámicas para formar un sistema comercial completo de tendencia.
La estrategia consta de cuatro componentes principales: 1) Identificación de velas grandes - determina el impulso de precios significativo comparando el cuerpo de la vela actual con las cinco velas anteriores; 2) Análisis de divergencia del RSI - mide los cambios de impulso utilizando la diferencia entre el RSI rápido de 5 períodos y el RSI lento de 14 períodos; 3) Detención inicial - estableciendo un stop loss fijo de 200 puntos en la entrada para controlar el riesgo inicial; 4) Detención de seguimiento - activando después de 200 puntos de ganancia, manteniendo una distancia de seguimiento dinámica de 150 puntos. La estrategia también utiliza la EMA de 21 períodos como un filtro de tendencia para ayudar a determinar la dirección general del mercado.
La estrategia construye un sistema completo de seguimiento de tendencias mediante la combinación de grandes velas y la divergencia RSI, logrando una gestión de riesgos integral a través de un mecanismo de doble parada. Es adecuado para mercados con tendencias claras y mayor volatilidad, pero requiere ajuste de parámetros basado en características específicas del mercado. A través de las direcciones de optimización sugeridas, la estabilidad y rentabilidad de la estrategia pueden mejorarse aún más.
/*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")