Estrategia cruzada de regresión lineal larga y corta

El autor:¿ Qué pasa?, Fecha: 2024-03-27 17:52:02
Las etiquetas:

img

Resumen general

La Estrategia de Regresión Lineal a Corto Largo es una estrategia de análisis técnico que utiliza un modelo de regresión lineal para predecir los movimientos futuros de los precios de una acción. El principio básico de la estrategia es: los movimientos de los precios de las acciones a menudo siguen una cierta tendencia lineal, y al calcular la regresión lineal del precio, se puede predecir el precio futuro.

Principios de estrategia

La estrategia primero calcula la regresión lineal del precio de las acciones durante un cierto período de tiempo. La regresión lineal se ajusta a una línea recta utilizando el método de los mínimos cuadrados, que representa la tendencia de cambio de precio a lo largo del tiempo. La estrategia luego traza la línea de precios prevista y el precio actual en el gráfico.

La estrategia define dos señales:

  1. Signales largos: se activan cuando el precio previsto supera el precio actual
  2. Signo corto: se activa cuando el precio previsto se cruza por debajo del precio actual

Cuando aparece la señal larga, la estrategia abre una posición larga; cuando aparece la señal corta, cierra la posición.

Los pasos clave de la estrategia son los siguientes:

  1. Calcular la regresión lineal del precio durante un período de tiempo
  2. Trazar la línea de precios prevista y el precio actual en el gráfico
  3. Definir las señales largas y cortas
  4. Abrir una posición larga cuando se activa la señal larga
  5. Cierre la posición cuando se activa la señal corta

Análisis de las ventajas

La estrategia de recrudecimiento de regresión lineal a corto y largo plazo tiene las siguientes ventajas:

  1. Simple y eficaz: La lógica de la estrategia es clara y fácil de implementar, y puede capturar la tendencia lineal del precio.
  2. Amplia aplicabilidad: La estrategia puede generar señales comerciales tanto en mercados de tendencia como en mercados de variación.
  3. Gran optimización: La estrategia contiene algunos parámetros clave, como el período de regresión lineal, las medias móviles, etc., que se pueden optimizar para mejorar el rendimiento.

Análisis de riesgos

A pesar de sus muchas ventajas, la Estrategia de Cruce de Regresión Lineal Larga-Corta también tiene algunos riesgos:

  1. Riesgo de reconocimiento de tendencias: cuando el movimiento de precios no sigue una tendencia lineal, como en un mercado de variación, la estrategia puede generar señales falsas.
  2. El rendimiento de la estrategia es sensible a la configuración de parámetros, y los parámetros inadecuados pueden conducir a pérdidas.
  3. Riesgo de sobreajuste: si los parámetros están demasiado optimizados, puede causar que la estrategia se sobreajuste a los datos históricos y funcione mal en el futuro.

Direcciones de optimización

  1. Combinar con otros indicadores: La señal de regresión lineal se puede combinar con otros indicadores técnicos como MACD, bandas de Bollinger, etc., para mejorar la precisión de las señales.
  2. Optimización dinámica de parámetros: se puede diseñar un mecanismo adaptativo para los parámetros para ajustar dinámicamente los parámetros de acuerdo con las condiciones del mercado, mejorando la adaptabilidad.
  3. Añadir un módulo de control de riesgos: Incorporar medidas de control de riesgos como el stop-loss y la gestión del dinero en la estrategia para reducir el riesgo de una sola transacción y aumentar los rendimientos acumulados.
  4. Optimización del aprendizaje automático: Los algoritmos de aprendizaje automático se pueden usar para optimizar continuamente el modelo de regresión lineal para hacer sus predicciones más precisas.

Resumen de las actividades

La Estrategia de Crossover de Regresión Lineal Larga y Corta genera señales comerciales basadas en la comparación del precio predicho a partir de la regresión lineal y el precio actual. La lógica de la estrategia es simple y clara, y puede capturar la tendencia lineal del precio y es aplicable a diversas condiciones de mercado. Al mismo tiempo, la estrategia es fácil de implementar y optimizar, y los parámetros se pueden ajustar de manera flexible, combinados con otros indicadores, se pueden agregar módulos de control de riesgos, etc., para mejorar continuamente el rendimiento de la estrategia. Sin embargo, la estrategia también tiene riesgos como reconocimiento de tendencia inexacto, configuración de parámetros inadecuada y sobreposición de datos históricos, por lo que se necesita precaución en la aplicación práctica. En general, la Estrategia de Crossover de Regresión Lineal Larga y Corta es una estrategia comercial simple y cuantitativa efectiva que vale la pena explorar y optimizar aún más.


/*backtest
start: 2024-02-25 00:00:00
end: 2024-03-26 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot
//@version=5
strategy("Linear Cross", overlay=true, margin_long=100, margin_short=0)

//Linear Regression

vol = volume

// Function to calculate linear regression
linregs(y, x, len) =>
    ybar = math.sum(y, len)/len
    xbar = math.sum(x, len)/len
    b = math.sum((x - xbar)*(y - ybar),len)/math.sum((x - xbar)*(x - xbar),len)
    a = ybar - b*xbar
    [a, b]

// Historical stock price data
price = close

// Length of linear regression
len = input(defval = 21, title = 'Strategy Length')
linearlen=input(defval = 9, title = 'Linear Lookback')
[a, b] = linregs(price, vol, len)

// Calculate linear regression for stock price based on volume
//eps = request.earnings(syminfo.ticker, earnings.actual)
//MA For double confirmation

out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)

// Predicted stock price based on volume
predicted_price = a + b*vol

// Check if predicted price is between open and close
is_between = open < predicted_price and predicted_price < close

//MACD
//[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

// Plot predicted stock price
plot(predicted_price, color=color.rgb(65, 59, 150), linewidth=2, title="Predicted Price")
plot(ta.sma(predicted_price,linearlen), color=color.rgb(199, 43, 64), linewidth=2, title="MA Predicted Price")
//offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200")
[macdLine, signalLine, histLine] = ta.macd(predicted_price, 12, 26, 9)

//BUY Signal

longCondition=false
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macdLine,2)
macdlong = ta.crossover(predicted_price, ta.wma(predicted_price,linearlen))  and (signalLine < macdLine)
if macdlong and macdrise
    longCondition := true

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
lastEntryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)
daysSinceEntry = len
daysSinceEntry := int((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) / (24 * 60 * 60 * 1000))
percentageChange = (close - lastEntryPrice) / lastEntryPrice * 100
//trailChange = (ta.highest(close,daysSinceEntry) - close) / close * 100

//label.new(bar_index, high, color=color.black, textcolor=color.white,text=str.tostring(int(trailChange)))
shortCondition=false
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macdLine,1)
macdsell = macdLine < signalLine
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
    shortCondition := true

if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)




Más.