Tendencia tras la estrategia de negociación de regresión basada en regresión lineal y media móvil

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

img

Resumen general

Esta estrategia diseña una tendencia simple siguiendo el sistema de negociación basado en la línea de regresión lineal y la línea de media móvil.

Nombre de la estrategia

Tendencia tras la estrategia de negociación de regresión

Principio de la estrategia

Los componentes clave de esta estrategia incluyen:

  1. Calcular la media móvil simple de N días (SMA)
  2. Calcular la línea de regresión lineal de los últimos N días
  3. Ir largo cuando el precio de cierre cruza por encima de la SMA y es superior a la línea de regresión
  4. Ir corto cuando el precio de cierre cruza por debajo de la SMA y es inferior a la línea de regresión
  5. Establecer el precio de stop loss y el precio de take profit

La línea de regresión lineal puede encajar bien en la dirección de la tendencia en los períodos recientes. Puede ayudar a juzgar la dirección general de la tendencia. Cuando el precio rompe la línea SMA, necesitamos determinar si la dirección de la línea de regresión lineal es consistente con esta ruptura. Solo cuando las dos direcciones son consistentes, se genera una señal comercial. Esto puede filtrar algunas rupturas falsas.

Además, la estrategia también establece un mecanismo de stop loss. Cuando el precio alcanza la línea de stop loss, cierra posiciones para detener la pérdida. También establece una línea de take profit para bloquear algunas ganancias.

Ventajas de la estrategia

La estrategia tiene las siguientes ventajas:

  1. Combinar el indicador de tendencia y el indicador de ruptura para evitar una ruptura falsa y mejorar la calidad de la señal
  2. Utilice la regresión lineal para determinar la dirección de la tendencia para el filtrado de tendencias, solo vaya largo en tendencia alcista y corto en tendencia bajista
  3. Establecer el stop loss y el take profit para controlar el riesgo
  4. Reglas claras y fáciles de entender
  5. Sólo unos pocos parámetros para afinar sin demasiada complejidad

Análisis de riesgos

La estrategia también tiene algunos riesgos:

  1. Se pueden generar más señales de negociación erróneas en el mercado de rango
  2. Los ajustes de la media móvil y los períodos de regresión necesitan pruebas y optimización extensas, los ajustes incorrectos pueden afectar el rendimiento de la estrategia
  3. Las pérdidas de detención pueden romperse en condiciones de mercado extremas que resulten en grandes pérdidas.
  4. Basado únicamente en indicadores técnicos sin combinar factores fundamentales

Con respecto a estos riesgos, podemos optimizar a partir de los siguientes aspectos:

  1. Considerar la posibilidad de suspender la estrategia o utilizar otros indicadores para filtrar en el mercado limitado por el rango
  2. Las pruebas de retroceso para encontrar los parámetros óptimos
  3. Optimizar y ajustar dinámicamente la posición de stop loss
  4. Combinar datos económicos y otros factores fundamentales

Direcciones de optimización

Los principales aspectos para optimizar aún más la estrategia incluyen:

  1. Añadir otros indicadores auxiliares para juzgar las condiciones del mercado y evitar la negociación en períodos de rango
  2. Optimizar el tipo de media móvil, como media móvil doble, media móvil triple, etc.
  3. Analizar más la pendiente de la recta de regresión y añadir las reglas de juicio pendiente
  4. Incorporar indicadores de volatilidad para establecer niveles dinámicos de stop loss y de toma de beneficios
  5. Utilice métodos de aprendizaje automático para optimizar automáticamente los parámetros

Conclusión

Esta estrategia integra la función de seguimiento de tendencia de las medias móviles y la capacidad de juicio de tendencia de la regresión lineal, formando un sistema de trading de seguimiento de tendencia relativamente simple. Puede lograr buenos resultados en mercados con tendencias fuertes. Todavía necesitamos una extensa prueba de retroceso y optimización de los parámetros y reglas, y un control adecuado del riesgo. Entonces esta estrategia debería ser capaz de obtener retornos de inversión constantes.


/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Regression Trading Strategy", shorttitle="RTS", overlay=true)

// Input parameters
n = input(14, title="SMA Period")
stop_loss_percentage = input(2, title="Stop Loss Percentage")
take_profit_percentage = input(2, title="Take Profit Percentage")

// Calculate the SMA
sma = sma(close, n)

// Linear regression function
linear_regression(src, length) =>
    sumX = 0.0
    sumY = 0.0
    sumXY = 0.0
    sumX2 = 0.0
    for i = 0 to length - 1
        sumX := sumX + i
        sumY := sumY + src[i]
        sumXY := sumXY + i * src[i]
        sumX2 := sumX2 + i * i
    slope = (length * sumXY - sumX * sumY) / (length * sumX2 - sumX * sumX)
    intercept = (sumY - slope * sumX) / length
    line = slope * length + intercept
    line

// Calculate the linear regression
regression_line = linear_regression(close, n)

// Plot the SMA and regression line
plot(sma, title="SMA", color=color.blue)
plot(regression_line, title="Regression Line", color=color.red)

// Trading strategy conditions
long_condition = crossover(close, sma) and close > regression_line
short_condition = crossunder(close, sma) and close < regression_line

// Exit conditions
stop_loss_price = close * (1 - stop_loss_percentage / 100)
take_profit_price = close * (1 + take_profit_percentage / 100)

// Plot entry and exit points on the chart
plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
plotshape(series=crossunder(close, stop_loss_price), title="Stop Loss", location=location.abovebar, color=color.red, style=shape.labeldown, text="SL")
plotshape(series=crossover(close, take_profit_price), title="Take Profit", location=location.belowbar, color=color.green, style=shape.labelup, text="TP")

// Strategy orders
strategy.entry("Long", strategy.long, when = long_condition)
strategy.entry("Short", strategy.short, when = short_condition)
strategy.exit("Exit", from_entry = "Long", when = crossover(close, stop_loss_price) or crossover(close, take_profit_price))
strategy.exit("Exit", from_entry = "Short", when = crossunder(close, stop_loss_price) or crossunder(close, take_profit_price))



Más.