Estrategia de regresión lineal inversa

El autor:¿ Qué pasa?, Fecha: 2023-12-29 17:15:07
Las etiquetas:

img

Resumen general

La estrategia de regresión lineal inversa es una estrategia de negociación de reversión basada en las fluctuaciones de precios. Combina el análisis de regresión lineal y el indicador AVERAGE TRUE RANGE, establece las condiciones para las líneas K ascendentes consecutivas o las líneas K descendentes consecutivas, y realiza operaciones inversas cuando el análisis de regresión lineal juzga la reversión de precios.

Principio de la estrategia

La estrategia primero calcula la pendiente de regresión lineal. Cuando la pendiente de regresión lineal es mayor o igual a 0, indica que el precio está en una tendencia al alza; cuando es menor que 0, indica una tendencia a la baja en los precios. Al mismo tiempo, combinado con la comparación entre el precio de cierre y el precio de apertura de la última línea K, se juzga si la última línea K subió o cayó. Cuando la pendiente de regresión lineal es mayor o igual a 0 y el precio de cierre de la última línea K es menor que el precio de apertura, se genera una señal de compra; cuando la pendiente de regresión lineal es menor a 0 y el precio de cierre de la última línea K es mayor que el precio de apertura, se genera una señal de venta.

Cuando se determina que el número de líneas K ascendentes consecutivas alcanza el número establecido, se genera una señal de venta bajo la condición de que la pendiente de regresión lineal sea menor que 0 para lograr una negociación de inversión cerca del punto más alto; cuando se determina que las líneas K descendentes consecutivas alcanzan el número de configuración, cuando la pendiente de regresión lineal es mayor o igual a 0, se genera una señal de compra para lograr una negociación de inversión cerca del punto más bajo.

Análisis de ventajas

La estrategia combina el comercio de tendencia y el comercio de reversión, y puede llevar a cabo operaciones de reversión en puntos críticos, obteniendo así la ventaja después del ajuste de precios. El análisis de regresión lineal proporciona un medio para determinar la tendencia general de los precios y evitar revertir posiciones cortas o largas cuando los precios todavía están subiendo o bajando.

En comparación con las simples estrategias de reversión, esta combina múltiples indicadores técnicos para controlar con mayor precisión el calendario de las transacciones, lo que puede evitar eficazmente el riesgo de rupturas falsas y aumentar la rentabilidad.

Análisis de riesgos

El principal riesgo que enfrenta esta estrategia es el fracaso de la inversión. Si se juzga que la señal de inversión de precios, el precio continúa manteniendo la tendencia original, causará pérdidas. Además, el establecimiento de parámetros de análisis de regresión lineal e indicadores ATR también afectará los ingresos de la estrategia.

El stop loss puede utilizarse para controlar pérdidas individuales. Evaluar razonablemente la frecuencia de las fluctuaciones del mercado, ajustar adecuadamente el número de líneas K consecutivas y reducir la frecuencia de negociación. Optimizar los parámetros del ciclo de regresión lineal y los parámetros ATR para que estén más en línea con las características de las diferentes variedades.

Dirección de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Añadir otros indicadores técnicos para mejorar la precisión del juicio, por ejemplo, MACD, banda de Bollinger, etc.

  2. Aumentar los componentes de aprendizaje automático para la optimización automática de parámetros y el ajuste dinámico de las reglas comerciales.

  3. Incorporar mecanismos de gestión de riesgos como la gestión de capital y estrategias de stop loss para controlar los riesgos comerciales.

  4. Optimización de la cartera que combina estrategias con otras estrategias no relacionadas para reducir las reducciones generales y mejorar la estabilidad.

  5. Ampliar a más variedades, evaluar la configuración de parámetros para diferentes variedades para hacer la estrategia más versátil.

Resumen de las actividades

La estrategia de regresión lineal inversa integra múltiples indicadores técnicos y toma operaciones inversas al juzgar el momento de la reversión de precios. Es una estrategia de negociación de reversión efectiva. A través de la optimización de parámetros y la mejora de la gestión de riesgos, la estrategia puede ampliar aún más los márgenes de ganancia y tiene un gran potencial de mejora.


/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Reverse Up/Down Strategy", currency=currency.USD, initial_capital=1000, pyramiding=2, default_qty_type=strategy.percent_of_equity, default_qty_value=100,overlay=true)

//User Options
consecutiveBarsUp   = input(title="Sell after how many bars up?",   type=input.integer, minval=1, defval=1)
consecutiveBarsDown = input(title="Buy after how many bars down?",  type=input.integer, minval=1, defval=1)
atrLength           = input(title="ATR Length",                     type=input.integer, minval=1, defval=14)
atrMult             = input(title="ATR Multiplier",                 type=input.float,   minval=0.1, defval=2.33)

//ATR Channel
adjustedATR     = sma(atr(atrLength),atrLength) * atrMult
longATR         = low - adjustedATR
shortATR        = high + adjustedATR
plot(shortATR,  title="Short ATR",  color=color.red)
plot(longATR,   title="Long ATR",   color=color.lime)


// This is the true linear regression slope rather than an approximation given by numerical differentiation
src = hlc3
len = input(defval=14, minval=1, title="Slope Length")
lrc = linreg(src, len, 0)
lrc1 = linreg(src, len,1)
lrs = (lrc-lrc1)

//Check if last candle was up or down
priceOpen = open
priceClose = close
longCondition = priceOpen > priceClose
shortCondition = priceOpen < priceClose
ups = 0.0
dns = 0.0

ups := shortCondition ? nz(ups[1]) + 1 : 0
dns := longCondition ? nz(dns[1]) + 1 : 0

if (shortCondition)
    strategy.close("buy", qty_percent=100, comment="Close")
    if (ups >= consecutiveBarsUp and lrs <= 0)
    	strategy.entry("sell", strategy.short, comment="Sell")
    	

if (longCondition)
    strategy.close("sell", qty_percent=100, comment="Close")
    if (dns >= consecutiveBarsDown and lrs >= 0)
	    strategy.entry("buy", strategy.long, comment = "Buy")


Más.