Este artículo analiza en profundidad una estrategia de seguimiento de tendencias que combina el indicador SuperTrend con un filtro de RSI estocástico para mejorar la precisión. Su objetivo es generar señales de compra y venta considerando la tendencia predominante y reduciendo las señales falsas.
Primero, se calculan el True Range (TR) y el Average True Range (ATR), luego se calculan las bandas superior e inferior utilizando ATR:
La banda superior = SMA ((Cerrado, período ATR) + multiplicador de ATR * ATR La banda inferior = SMA ((Cerrado, período ATR) - Multiplificador de ATR * ATR
Una tendencia alcista se identifica cuando se cierra > banda inferior. Una tendencia bajista se identifica cuando se cierra < banda superior.
Durante la tendencia alcista, la SuperTendencia se establece en la banda inferior.
Para reducir las señales falsas, la SuperTendencia se suaviza utilizando una media móvil para obtener la SuperTendencia filtrada.
El valor del RSI se calcula, luego se aplica el indicador estocástico para generar el RSI estocástico.
Entrada larga: cierre de cruces por encima de SuperTrend filtrado en tendencia alcista y RSI estocástico < 80 Entrada corta: cierre de cruces por debajo de SuperTrend filtrado en tendencia bajista y RSI estocástico > 20
Salida larga: cierre de cruces por debajo de la SuperTendencia filtrada en tendencia alcista
Salida corta: cierre de cruces por encima de la SuperTendencia filtrada en tendencia bajista
Esta estrategia de seguimiento de tendencias mejorada tiene las siguientes ventajas sobre las medias móviles simples:
Esta estrategia combina las fortalezas de SuperTrend y Stochastic RSI para la identificación efectiva de tendencias y señales comerciales de calidad, al tiempo que hace que la estrategia sea robusta para el ruido del mercado a través de mecanismos de filtrado.
/*backtest start: 2024-01-09 00:00:00 end: 2024-01-16 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Improved SuperTrend Strategy with Stochastic RSI", shorttitle="IST+StochRSI", overlay=true) // Input parameters atr_length = input(14, title="ATR Length") atr_multiplier = input(1.5, title="ATR Multiplier") filter_length = input(5, title="Filter Length") stoch_length = input(14, title="Stochastic RSI Length") smooth_k = input(3, title="Stochastic RSI %K Smoothing") // Calculate True Range (TR) and Average True Range (ATR) tr = ta.rma(ta.tr, atr_length) atr = ta.rma(tr, atr_length) // Calculate SuperTrend upper_band = ta.sma(close, atr_length) + atr_multiplier * atr lower_band = ta.sma(close, atr_length) - atr_multiplier * atr is_uptrend = close > lower_band is_downtrend = close < upper_band super_trend = is_uptrend ? lower_band : na super_trend := is_downtrend ? upper_band : super_trend // Filter for reducing false signals filtered_super_trend = ta.sma(super_trend, filter_length) // Calculate Stochastic RSI rsi_value = ta.rsi(close, stoch_length) stoch_rsi = ta.sma(ta.stoch(rsi_value, rsi_value, rsi_value, stoch_length), smooth_k) // Entry conditions long_condition = ta.crossover(close, filtered_super_trend) and is_uptrend and stoch_rsi < 80 short_condition = ta.crossunder(close, filtered_super_trend) and is_downtrend and stoch_rsi > 20 // Exit conditions exit_long_condition = ta.crossunder(close, filtered_super_trend) and is_uptrend exit_short_condition = ta.crossover(close, filtered_super_trend) and is_downtrend // Plot SuperTrend and filtered SuperTrend plot(super_trend, color=color.orange, title="SuperTrend", linewidth=2) plot(filtered_super_trend, color=color.blue, title="Filtered SuperTrend", linewidth=2) // Plot Buy and Sell signals plotshape(series=long_condition, title="Buy Signal", color=color.green, style=shape.triangleup, location=location.belowbar) plotshape(series=short_condition, title="Sell Signal", color=color.red, style=shape.triangledown, location=location.abovebar) // Output signals to the console for analysis plotchar(long_condition, "Long Signal", "▲", location.belowbar, color=color.green, size=size.small) plotchar(short_condition, "Short Signal", "▼", location.abovebar, color=color.red, size=size.small) // Strategy entry and exit strategy.entry("Long", strategy.long, when=long_condition) strategy.entry("Short", strategy.short, when=short_condition) strategy.close("Long", when=exit_long_condition) strategy.close("Short", when=exit_short_condition)