
Este artículo analiza en detalle una estrategia de seguimiento de tendencias mejorada que combina el indicador SuperTrend y el filtro Stochastic RSI. La estrategia tiene como objetivo generar señales de compra y venta, al tiempo que considera las tendencias del mercado y reduce las falsas señales.
En primer lugar, se calcula el rango de fluctuación real (TR) y el rango de fluctuación real promedio (ATR). Luego, se utiliza el ATR para calcular el tren de arriba y el tren de abajo:
La trayectoria superior = SMA (precio de cierre, ciclo ATR) + ATR multiplicado por ATR La línea inferior = SMA (precio de cierre, ciclo ATR) - ATR multiplicado por ATR
Si el precio de cierre está por encima de la baja tendencia, es una tendencia al alza; si el precio de cierre está por debajo de la alta tendencia, es una tendencia a la baja. En la tendencia alza, SuperTrend es la baja; en la tendencia a la baja, SuperTrend es la alta.
Para reducir las señales falsas, se hace una media móvil de SuperTrend para obtener una SuperTrend filtrada.
Calcula el valor del RSI y luego aplica el indicador estocástico para generar el RSI estocástico. Refleja si el RSI está en una zona de sobreventa o sobreventa.
Condiciones de compra: el precio de cierre se encuentra en una tendencia alcista tras una ruptura del SuperTrend y el RSI estocástico < 80 Condiciones de venta: el precio de cierre está en una tendencia descendente tras una ruptura de la SuperTrend y el RSI estocástico es > 20
Salida de la compra: el precio de cierre está en una tendencia alcista después de atravesar la SuperTrend y está en una tendencia alcista Salida y venta: el precio de cierre se encuentra en una tendencia descendente después de atravesar la SuperTrend
Esta es una estrategia de seguimiento de tendencias mejorada que tiene las siguientes ventajas en comparación con las medias móviles simples:
Esta estrategia combina las ventajas de los dos indicadores SuperTrend y Stochastic RSI para identificar tendencias de manera efectiva y emitir señales de comercio de alta calidad. Al mismo tiempo, el mecanismo de filtración también lo hace más robusto con el ruido del mercado. Esta estrategia puede obtener un mejor efecto estratégico a través de la optimización de parámetros, y también se puede considerar la combinación con otros indicadores o modelos.
/*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)