Стратегия использует показатели линейной регрессии и волатильности для выявления различных состояний рынка. Когда условия для покупки или продажи выполнены, стратегия устанавливает соответствующие длинные или короткие позиции. Кроме того, стратегия позволяет оптимизировать параметры и корректировать их на основе рыночных условий для адаптации к различным рыночным условиям. Стратегия также использует экспоненциальные скользящие средние (EMAs) в качестве дополнительных индикаторов для подтверждения торговых сигналов.
Стратегия определяет состояние рынка с использованием линейных регрессионных и волатильных индикаторов, с EMA в качестве подтверждающих индикаторов, создавая адаптивную и логически ясную торговую стратегию. Преимущества стратегии заключаются в сочетании тенденций и волатильности, позволяя оптимизировать параметры, что делает ее подходящей для различных рыночных условий. Однако стратегия также сталкивается с такими рисками, как выбор параметров, неуравновешенные рынки и события черного лебедя, требующие непрерывной оптимизации и улучшения в практических приложениях. Будущие улучшения могут сосредоточиться на обогащении источников сигналов, оптимизации выбора параметров и уточнении мер контроля риска для повышения стабильности и прибыльности стратегии.
/*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)