Una estrategia de trading cuantitativo de seguimiento de tendencias que combina la ruptura de un máximo histórico con un filtro de promedio móvil mensual

ATH SMA MA
Fecha de creación: 2024-12-13 10:25:18 Última modificación: 2024-12-13 10:25:18
Copiar: 0 Número de Visitas: 336
1
Seguir
1617
Seguidores

Una estrategia de trading cuantitativo de seguimiento de tendencias que combina la ruptura de un máximo histórico con un filtro de promedio móvil mensual

Descripción general

La estrategia es una estrategia de seguimiento de tendencias basado en brechas históricas y filtros de línea media de la línea lunar. Busca señales de compra mediante la vigilancia de si los precios han superado los máximos históricos anteriores, mientras que utiliza la línea lunar de 8 ciclos de media móvil simple ((8 SMA) como condición de filtro de venta para reducir el riesgo de falsas brechas. La idea de diseño de esta estrategia se ajusta a la característica de mercado de “continuidad de la tendencia”, especialmente adecuada para capturar situaciones de gran nivel en una fuerte tendencia ascendente.

Principio de estrategia

La lógica central de la estrategia incluye dos partes clave:

  1. Señal de compra: Cuando el precio de cierre más reciente supera el máximo histórico de la fecha anterior (sin incluir el máximo de la línea K actual), el sistema genera una señal de compra. Esta condición garantiza la entrada solo en una clara tendencia alcista.
  2. Señales de venta: cuando el precio de la línea lunar cae por debajo de la media móvil simple de 8 períodos, el sistema dispara una señal de venta. Esta condición ayuda a detener los pérdidas a tiempo y evitar que la reversión de la tendencia cause mayores pérdidas. La estrategia también diseñó un mecanismo de seguimiento del estado de la señal para evitar la repetición de la señal en el mismo estado, lo que aumenta la estabilidad de la estrategia.

Ventajas estratégicas

  1. La capacidad de captura de tendencias es fuerte: la capacidad de capturar de manera efectiva las tendencias de fuerte alza a través de la determinación de brechas en los máximos históricos.
  2. Control de riesgo perfecto: la combinación de la línea lunar y la línea media como condición de filtro, puede filtrar eficazmente las brechas falsas.
  3. La estabilidad de la señal es alta: el estado de la señal es rastreado a través de la variable lastSignal para evitar la repetición de la señal.
  4. Buena visualización: La estrategia ofrece una interfaz gráfica clara, que incluye líneas de puntos altos históricos, líneas medias y marcas de señales de compra y venta.
  5. Adaptabilidad: La estrategia puede aplicarse a diferentes períodos de tiempo y variedades.

Riesgo estratégico

  1. Riesgo de retraso: La señal de un nuevo récord tiene un cierto retraso y puede perder el mejor momento de entrada.
  2. Riesgo de brechas falsas: Aunque hay filtros de línea media, es posible que se produzcan brechas falsas en mercados convulsivos.
  3. Riesgo de retroceso: la estrategia puede sufrir un retroceso mayor en un punto de cambio de tendencia.
  4. Riesgo de gestión de fondos: la estrategia no incluye un mecanismo de gestión de posiciones y requiere reglas adicionales de gestión de fondos.

Dirección de optimización de la estrategia

  1. Confirmación de la introducción: Se puede agregar un indicador de volumen de transacción como condición de confirmación de ruptura, para mejorar la fiabilidad de la señal.
  2. Mecanismos de detención de pérdidas mejorados: se pueden diseñar reglas de detención más flexibles, como el seguimiento de la detención o la detención de la tasa de volatilidad.
  3. Administración de posiciones: Ajuste el tamaño de las posiciones de forma dinámica en función de la volatilidad del mercado y la intensidad de la tendencia.
  4. Optimización de la filtración de señales: se puede agregar un indicador de fuerza de tendencia, como el ADX, para filtrar aún más las señales de debilidad.
  5. Aumentar el filtro de tiempo: Se puede agregar un filtro de ciclo de tiempo para evitar el comercio en períodos de tiempo inadecuados.

Resumir

Se trata de una estrategia de seguimiento de tendencias de diseño razonable y lógica. El uso de la combinación de brechas históricas y medias lunares garantiza un control efectivo de la tendencia y un control razonable del riesgo. Aunque existe cierto retraso y riesgo de falsas brechas, el rendimiento general de la estrategia se espera que mejore aún más con la dirección de optimización recomendada.

Código Fuente de la Estrategia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Buy Signal on Close Greater Than Previous All-Time High Strategy", overlay=true)

// Initialize the previous all-time high
var float prevAllTimeHigh = na

// Update the all-time high, excluding the current bar's high (use previous bar's high)
if (na(prevAllTimeHigh) or high[1] > prevAllTimeHigh)
    prevAllTimeHigh := high[1]

// Monthly closing price and 8 SMA on monthly time frame
monthlyClose = request.security(syminfo.tickerid, "M", close)
monthlySMA = ta.sma(monthlyClose, 8)

// Variables to track the last signal type
var int lastSignal = 0 // 0 = None, 1 = Buy, 2 = Sell

// Debugging output to check the all-time high and conditions
plot(prevAllTimeHigh, color=color.blue, linewidth=1, title="Previous All-Time High")
plot(monthlySMA, color=color.green, linewidth=1, title="8 SMA (Monthly)")

// Buy signal: when the latest close is greater than the previous all-time high
buySignal = close > prevAllTimeHigh and lastSignal != 1

// Sell signal: when the monthly close is below the 8 SMA
sellSignal = monthlyClose < monthlySMA and lastSignal != 2

// Update the last signal type after triggering a signal
if (buySignal)
    lastSignal := 1
if (sellSignal)
    lastSignal := 2

// Execute the strategy orders
if (buySignal)
    strategy.entry("Buy", strategy.long)

if (sellSignal)
    strategy.close("Buy")

// Optional: Plot buy and sell signals on the chart for visual reference
plotshape(series=buySignal, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=sellSignal, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)