
Стратегия использует линейную регрессию и индикаторы волатильности для идентификации различных состояний рынка, создавая соответствующие позиции сверх или сверх свободных позиций при выполнении условий покупки или продажи. В то же время, стратегия позволяет оптимизировать и корректировать параметры в зависимости от состояния рынка, чтобы адаптироваться к различным рыночным условиям.
Эта стратегия использует линейную регрессию и показатели волатильности для идентификации состояния рынка и использует 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)