La estrategia utiliza indicadores de regresión lineal y volatilidad para identificar diferentes estados del mercado. Cuando se cumplen las condiciones para comprar o vender, la estrategia establece posiciones largas o cortas correspondientes. Además, la estrategia permite la optimización y ajuste de parámetros basados en las condiciones del mercado para adaptarse a varios entornos del mercado. La estrategia también emplea promedios móviles exponenciales (EMA) como indicadores adicionales para confirmar las señales comerciales.
La estrategia identifica estados de mercado utilizando indicadores de regresión lineal y volatilidad, con EMAs como indicadores de confirmación, construyendo una estrategia de negociación adaptativa y lógicamente clara. Las ventajas de la estrategia se encuentran en la combinación de tendencias y volatilidad al tiempo que permite la optimización de parámetros, lo que la hace adecuada para varios entornos de mercado. Sin embargo, la estrategia también enfrenta riesgos como la selección de parámetros, mercados agitados y eventos de cisne negro, que requieren optimización y mejora continua en aplicaciones prácticas. Las mejoras futuras pueden centrarse en enriquecer las fuentes de señal, optimizar la selección de parámetros y refinar las medidas de control de riesgos para mejorar la estabilidad y rentabilidad de la estrategia.
/*backtest start: 2023-05-22 00:00:00 end: 2024-05-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © tmalvao //@version=5 strategy("Regime de Mercado com Regressão e Volatilidade Otimizado", overlay=true) // Parâmetros para otimização upperThreshold = input.float(1.0, title="Upper Threshold") lowerThreshold = input.float(-1.0, title="Lower Threshold") length = input.int(50, title="Length", minval=1) // Indicadores de volatilidade atrLength = input.int(14, title="ATR Length") atrMult = input.float(2.0, title="ATR Multiplier") atr = ta.atr(atrLength) volatility = atr * atrMult // Calculando a regressão linear usando função incorporada intercept = ta.linreg(close, length, 0) slope = ta.linreg(close, length, 1) - ta.linreg(close, length, 0) // Sinal de compra e venda buySignal = slope > upperThreshold and close > intercept + volatility sellSignal = slope < lowerThreshold and close < intercept - volatility // Entrando e saindo das posições if (buySignal) strategy.entry("Buy", strategy.long) if (sellSignal) strategy.entry("Sell", strategy.short) // Indicadores adicionais para confirmação emaFastLength = input.int(10, title="EMA Fast Length") emaSlowLength = input.int(50, title="EMA Slow Length") emaFast = ta.ema(close, emaFastLength) emaSlow = ta.ema(close, emaSlowLength) // Confirmando sinais com EMAs if (buySignal and emaFast > emaSlow) strategy.entry("Buy Confirmed", strategy.long) if (sellSignal and emaFast < emaSlow) strategy.entry("Sell Confirmed", strategy.short) // Exibindo informações no gráfico plot(slope, title="Slope", color=color.blue) plot(intercept, title="Intercept", color=color.red) plot(volatility, title="Volatility", color=color.green) hline(upperThreshold, "Upper Threshold", color=color.green, linestyle=hline.style_dotted) hline(lowerThreshold, "Lower Threshold", color=color.red, linestyle=hline.style_dotted)