Estrategia de seguimiento de tendencias basada en la ruptura de la regresión de la media móvil


Fecha de creación: 2024-02-23 14:46:37 Última modificación: 2024-02-23 14:46:37
Copiar: 0 Número de Visitas: 651
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias basada en la ruptura de la regresión de la media móvil

Descripción general

La estrategia de ruptura de la regresión de la media es una estrategia de negociación cuantitativa típica de seguimiento de tendencias. La estrategia utiliza las medias móviles y su canal de diferencia estándar para juzgar el movimiento del mercado y generar una señal de negociación cuando el precio rompe el canal de diferencia estándar.

Principio de estrategia

La estrategia primero calcula el SMA de un promedio móvil simple de N días (el 50 por defecto) y luego calcula el diferencial estándar de StdDev de precios de ese ciclo basado en el SMA. Toma el SMA como el eje central, y las trayectorias ascendentes y descendentes toman el doble de StdDev como trayectorias ascendentes y descendentes para construir el canal de diferencias estándar de la barra. Haga hueco cuando el precio sube a la barra; haga más cuando el precio baja a la barra.

Después de entrar en el mercado, la estrategia establece una parada de pérdidas. En concreto, después de hacer más, la línea de parada es el precio de cierre al entrar en el mercado de — 100 - porcentaje de parada de pérdidas; después de hacer un descuento, la línea de parada es el precio de cierre al entrar en el mercado de — 100 + porcentaje de parada de pérdidas).

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. Es capaz de seguir tendencias. Utiliza el canal de diferencia estándar para seguir dinámicamente las fluctuaciones del mercado.
  2. El control de la reversión es fuerte. El uso de stop loss móvil permite un control efectivo de la pérdida individual.
  3. La implementación es sencilla. Se ha ahorrado una gran cantidad de optimización de parámetros y es muy fácil de implementar.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. Riesgo de reversión de la tendencia. Las estrategias de seguimiento de tendencias son propensas a la salida y reversión de pérdidas.
  2. El riesgo sensible de los parámetros. La elección de los parámetros con periodicidad de las medias móviles y el múltiplo de la diferencia estándar tiene un mayor impacto en el rendimiento de la estrategia.
  3. El stop loss es demasiado radical y puede causar pérdidas adicionales. La configuración incorrecta del stop loss puede causar pérdidas adicionales.

Las soluciones para los riesgos son:

  1. Combinado con un indicador de volatilidad para evitar falsas rupturas.
  2. Optimización de los parámetros para encontrar la combinación óptima de parámetros.
  3. El gobierno de la República Democrática del Congo ha anunciado que el gobierno de la República Democrática del Congo no está en condiciones de hacer nada.

Dirección de optimización

La estrategia tiene espacio para ser optimizada aún más:

  1. Utilice el promedio de varios períodos de tiempo para verificar y evitar que la curva sea demasiado sensible.

  2. Combinación con otros indicadores como el MACD para juzgar tendencias y desviaciones.

  3. Introducción de parámetros de optimización dinámica para algoritmos de aprendizaje automático.

Resumir

La estrategia de ruptura de la regresión de la línea media es una estrategia de comercio cuantitativa muy práctica en general. Tiene las ventajas de seguir la tendencia, controlar el retroceso, lograr una simplicidad adecuada para la necesidad de comercio cuantitativo. También hay que tener en cuenta algunos problemas de selección de parámetros y configuración de stop loss, junto con análisis de múltiples ejes de tiempo y optimización de parámetros, para obtener un mejor rendimiento de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2023-02-16 00:00:00
end: 2024-02-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Standard Deviation Bands with Buy/Sell Signals", overlay=true)

// Input for the number of standard deviations
deviationMultiplier = input.float(2.0, title="Standard Deviation Multiplier")

// Input for the length of the moving average
maLength = input.int(50, title="Moving Average Length")

// Input for the stop loss percentage
stopLossPercentage = input.float(12, title="Stop Loss Percentage")

// Calculate the moving average
sma = ta.sma(close, maLength)

// Calculate the standard deviation of the price
priceDeviation = ta.stdev(close, maLength)

// Calculate the upper and lower bands
upperBand = sma + (priceDeviation * deviationMultiplier)
lowerBand = sma - (priceDeviation * deviationMultiplier)

// Plot the bands
plot(upperBand, color=color.green, title="Upper Band")
plot(lowerBand, color=color.red, title="Lower Band")

// Plot the moving average
plot(sma, color=color.blue, title="SMA", linewidth=2)

// Buy Signal
buyCondition = ta.crossover(close, lowerBand)
sellCondition = ta.crossunder(close, upperBand)

// Calculate stop loss level
stopLossLevelBuy = close * (1 - stopLossPercentage / 100)
stopLossLevelSell = close * (1 + stopLossPercentage / 100)

// Create Buy and Sell Alerts
alertcondition(buyCondition, title="Buy Signal", message="Buy Signal - Price Crossed Below Lower Band")
alertcondition(sellCondition, title="Sell Signal", message="Sell Signal - Price Crossed Above Upper Band")

// Plot Buy and Sell Arrows on the chart
plotshape(buyCondition, style=shape.triangleup, location=location.belowbar, color=color.green, title="Buy Signal Arrow")
plotshape(sellCondition, style=shape.triangledown, location=location.abovebar, color=color.red, title="Sell Signal Arrow")

// Exit Long and Short Positions
var float stopLossBuy = na
var float stopLossSell = na

if ta.crossover(close, sma)
    stopLossBuy := stopLossLevelBuy
if ta.crossunder(close, sma)
    stopLossSell := stopLossLevelSell

strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.exit("Stop Loss/Take Profit Buy", from_entry = "Buy", stop = stopLossBuy)
strategy.entry("Sell", strategy.short, when = sellCondition)
strategy.exit("Stop Loss/Take Profit Sell", from_entry = "Sell", stop = stopLossSell)