Estrategia de regresión lineal inversa


Fecha de creación: 2023-12-29 17:15:07 Última modificación: 2023-12-29 17:15:07
Copiar: 2 Número de Visitas: 722
1
Seguir
1621
Seguidores

Estrategia de regresión lineal inversa

Descripción general

La estrategia de regresión lineal inversa es una estrategia de negociación inversa basada en la fluctuación de los precios. Combina el análisis de regresión lineal y el indicador AVERAGE TRUE RANGE, y establece condiciones para que la línea K suba o baje continuamente.

Principio de estrategia

La estrategia primero calcula la pendiente de la regresión lineal. Cuando la pendiente de regresión lineal es mayor que 0 indica que el precio está en una tendencia al alza; cuando es menor que 0, indica que el precio está en una tendencia a la baja. Al mismo tiempo, se combina el contraste entre el precio de cierre de la última línea K y el precio de apertura para determinar si la última línea K está arriba o abajo.

Se puede controlar la frecuencia de las operaciones mediante la configuración de los números de la línea K de subida y bajada consecutiva. Se puede generar una señal de venta cuando se determina que la línea K de subida y bajada consecutiva alcanza un número establecido, y se produce una inversión de comercio cerca del punto más alto si la inclinación de regresión lineal es menor que 0, y se puede generar una señal de compra cuando la línea K de subida y bajada consecutiva es mayor que 0, y se produce una inversión de comercio cerca del punto más bajo.

Análisis de las ventajas

Esta estrategia combina la tendencia y el cambio de tendencia, permitiendo el cambio de tendencia cerca de los puntos críticos para obtener ventajas después del ajuste de los precios. El análisis de regresión lineal proporciona la forma de determinar la tendencia general de los precios, evitando el cambio de tendencia cuando los precios siguen subiendo o bajando. Las condiciones de la línea K continua controlan la frecuencia de las operaciones, operando cerca de los puntos críticos.

En comparación con la simple estrategia inversa, la estrategia combina varios indicadores técnicos para un control más preciso del tiempo de negociación, lo que evita el riesgo de falsas rupturas y aumenta la probabilidad de obtener ganancias.

Análisis de riesgos

La estrategia se enfrenta principalmente al riesgo de fracaso de la reversión. Si se juzga que el precio continúa en la tendencia original después de la señal de reversión del precio, se producen pérdidas. Además, el análisis de regresión lineal y la configuración de los parámetros del indicador ATR también afectan a los beneficios de la estrategia.

Se pueden controlar las pérdidas individuales mediante el stop loss. Se puede evaluar razonablemente la frecuencia de las fluctuaciones del mercado, ajustar adecuadamente el número de líneas K consecutivas y reducir la frecuencia de las transacciones. Se pueden optimizar los parámetros del ciclo de regresión lineal y los parámetros ATR para que se ajusten mejor a las características de las diferentes variedades.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. La adición de otros indicadores técnicos, combinados con diferentes indicadores de períodos de tiempo, mejora la precisión del juicio. Por ejemplo, la adición de MACD, Bollinger Band, etc.

  2. Añade componentes de aprendizaje automático, optimiza automáticamente los parámetros mediante algoritmos y ajusta dinámicamente las reglas de transacción.

  3. Adherirse a mecanismos de gestión de riesgos, como la gestión de fondos, estrategias de stop loss, etc., para controlar el riesgo de las transacciones.

  4. Optimización de la combinación, combinación de la estrategia con otras estrategias no relevantes, reducción de la retroceso general y mejora de la estabilidad.

  5. Extensión a más variedades para evaluar la configuración de los parámetros de las diferentes variedades, lo que hace que la estrategia sea más universal.

Resumir

La estrategia de regresión lineal inversa, que integra varios indicadores técnicos y opera de manera inversa para determinar el momento de la reversión de los precios, es una estrategia de negociación inversa eficaz. La estrategia puede ampliar aún más el margen de ganancias mediante la optimización de los parámetros y el fortalecimiento de la gestión de riesgos, y tiene un gran potencial de mejora.

Código Fuente de la Estrategia
/*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")