
La estrategia utiliza la inclinación de la regresión lineal para identificar diferentes estados del mercado (a la baja o a la baja). La inclinación de la regresión lineal de los precios de cierre durante un período de tiempo permite medir la dirección y la intensidad de la tendencia del mercado. Cuando la inclinación es mayor que un umbral, el mercado se considera optimista y la estrategia entra en una posición de varios puntos; cuando la inclinación es menor que el umbral negativo, el mercado se considera bajista y la estrategia entra en una posición de un punto vacío.
El principio central de esta estrategia es el uso de la inclinación de la regresión lineal para identificar el estado del mercado. Mediante la regresión lineal en el precio de cierre durante un período de tiempo, se obtiene una línea de mejor ajuste. La inclinación de esta línea refleja la dirección y la fuerza de la tendencia general de los precios durante ese período de tiempo.
La estrategia de identificación del estado del mercado dinámico basado en la inclinación de la regresión lineal determina el estado del mercado mediante el cálculo de la inclinación de la regresión lineal del precio y luego toma decisiones comerciales correspondientes. La lógica de la estrategia es clara, la computación es simple y puede capturar de manera efectiva las principales tendencias del mercado.
/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"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("Minha estratégia", overlay=true, margin_long=100, margin_short=100)
// Função para calcular o slope (inclinação) com base na média móvel simples (SMA)
slope_length = input(20, title="Slope Length")
sma_length = input(50, title="SMA Length")
slope_threshold = input.float(0.1, title="Slope Threshold")
sma = ta.sma(close, sma_length)
// Calculando o slope (inclinação)
var float slope = na
if (not na(close[slope_length - 1]))
slope := (close - close[slope_length]) / slope_length
// Identificação dos regimes de mercado com base no slope
bullish_market = slope > slope_threshold
bearish_market = slope < -slope_threshold
// Condições de entrada e saída para mercados bullish e bearish
if (bullish_market)
strategy.entry("Long", strategy.long)
if (bearish_market)
strategy.entry("Short", strategy.short)
// Saída das posições
exit_condition = ta.crossover(close, sma) or ta.crossunder(close, sma)
if (exit_condition)
strategy.close("Long")
strategy.close("Short")
// Exibir a inclinação em uma janela separada
slope_plot = plot(slope, title="Slope", color=color.blue)
hline(0, "Zero Line", color=color.gray)