
Die Strategie nutzt Linear-Regression- und Volatilitätsindikatoren, um verschiedene Marktzustände zu identifizieren. Die Strategie errichtet entsprechende Über- oder Leerpositionen, wenn die Kauf- oder Verkaufskonditionen erfüllt werden. Die Strategie erlaubt außerdem die Optimierung und Anpassung der Parameter an die Marktbedingungen, um sie an die verschiedenen Marktumgebungen anzupassen.
Die Strategie identifiziert die Marktsituation durch lineare Regression und Volatilitätsindikatoren und verwendet EMAs als Bestätigungsindikatoren, um eine anpassungsfähige, logisch klare Handelsstrategie zu erstellen. Der Vorteil der Strategie besteht darin, Trends und Volatilität zu kombinieren und gleichzeitig Parameteroptimierungen für verschiedene Marktumgebungen zu ermöglichen. Die Strategie birgt jedoch auch Risiken wie Parameterwahl, Marktschocks und Black Swan-Ereignisse, die in der praktischen Anwendung ständig optimiert und verbessert werden müssen.
/*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)