Estrategia de inversión de tendencia dinámica de seguimiento

El autor:¿ Qué pasa?, Fecha: 2024-01-16 15:35:18
Las etiquetas:

img

Resumen general

La estrategia de inversión de tendencia dinámica es una estrategia de negociación cuantitativa a corto plazo basada en el indicador secuencial de JD. Al rastrear los máximos y mínimos de precios en tiempo real, esta estrategia determina la dirección y el impulso de la tendencia actual para capturar eficientemente los puntos de inversión del mercado para el momento de entrada y salida.

  1. Utilice los máximos y mínimos de precios en lugar de los precios cerrados para determinar tendencias, lo que puede capturar los cambios de precios más rápidamente.
  2. El número máximo de contadores es 7 en lugar de 9, lo que permite una generación más rápida de señales comerciales.
  3. Se añaden opciones para líneas de soporte/resistencia y reversiones de 5 puntos como stop loss.

Esta estrategia es adecuada para marcos de tiempo a corto plazo, como gráficos de 5 y 15 minutos, que pueden capturar eficazmente las fluctuaciones de precios a corto plazo y las oportunidades de reversión.

Estrategia lógica

La lógica central de la estrategia de inversión de tendencia dinámica se basa en el indicador secuencial JD. Al comparar los precios altos y bajos del período actual con los de los dos períodos anteriores, este indicador determina si se han producido altos o bajos más altos sucesivos y genera un recuento secuencial de 1 a 7.

En concreto, las siguientes variables se definen en la estrategia:

  • sp_up: verdadero cuando el precio más alto actual excede el precio más alto de hace 2 períodos
  • sp_dn: verdadero cuando el precio bajo actual cae por debajo del precio bajo de hace 2 períodos
  • sp_ct: el conteo actual, incrementos de 1 cada vez que sp_up o sp_dn es verdadero, con un máximo de 7
  • sp_com: verdadero cuando el conteo es igual a 7
  • sp_usr: el precio medio al contar 7 y sp_up, que sirve como resistencia al alza
  • sp_dsr: el precio medio en el recuento 7 y sp_dn, que sirve de soporte a la baja

La lógica para la generación de señales comerciales es:

  • Signo largo: sp_com es verdadero y sp_dn es verdadero, lo que indica la finalización del recuento y una tendencia a la baja
  • Señal corto: sp_com es verdadero y sp_up es verdadero, lo que indica la finalización del conteo y una tendencia alcista

La lógica de stop loss es:

  • SL largo: inversión del conteo a 5 (sp_up true) o cruce del precio por encima de sp_usr
  • SL corto: inversión del conteo a 5 (sp_dn true) o cruce del precio por debajo de sp_dsr

Al comparar máximos/bajos en tiempo real para determinar la dirección y la fuerza de la tendencia, junto con el tiempo de entrada basado en el conteo, esta estrategia puede capturar eficazmente las oportunidades de reversión a corto plazo.

Análisis de ventajas

En comparación con las estrategias tradicionales de JD Sequential, la estrategia de inversión de tendencia dinámica de seguimiento tiene las siguientes ventajas:

  1. El uso de la comparación alto/bajo es más rápido que los precios cerrados en la captura de tendencias, y un recuento de 7 genera señales más rápido que el recuento de 9.
  2. Mecanismo de stop loss mejorado: la adición de inversiones de 5 recuentos y soporte/resistencia de stop loss permite un mejor control del riesgo.
  3. Configuraciones flexibles: las opciones para incluir stop loss y mostrar recuentos parciales añaden flexibilidad.
  4. Las señales de alta frecuencia combinadas con el stop loss adecuado se adaptan bien a los marcos de tiempo a corto plazo.

La principal ventaja de esta estrategia es su rápida respuesta, que puede capturar eficazmente las grandes fluctuaciones causadas por eventos a corto plazo.

Análisis de riesgos

La estrategia de inversión de tendencias dinámicas de seguimiento también conlleva algunos riesgos:

  1. Aumento de los costos de negociación por el comercio de alta frecuencia.
  2. La comparación de altos y bajos en mercados variados puede desencadenar frecuentemente operaciones y pérdidas injustificadas.
  3. Las paradas duras son vulnerables a los picos y deben ajustarse oportunamente.

Para mitigar los riesgos mencionados anteriormente, la estrategia puede optimizarse en los siguientes aspectos:

  1. Reducir el tamaño de las posiciones para reducir el uso de capital por operación.
  2. Detener las operaciones durante los mercados agitados/variantes para evitar operaciones ineficaces.
  3. Emplear paradas traseras o paradas de fuga para reducir las posibilidades de quedar atrapados.

Direcciones de optimización

Hay un amplio margen para optimizar aún más la estrategia dinámica de seguimiento de tendencias, principalmente en las siguientes direcciones:

  1. Determinar la dirección de la tendencia principal en los marcos de tiempo más altos para evitar negociar en contra de ella.

  2. Combinaciones con otros indicadores Incorporar métricas de volatilidad, datos de volumen, etc. para mejorar la calidad de la señal.

  3. Aprendizaje automático para validación adicional. Utilice algoritmos de IA / ML como juicio auxiliar sobre las señales comerciales para reducir las operaciones erróneas.

  4. Optimización de parámetros como períodos de conteo, sesiones comerciales, dimensionamiento de posiciones, etc. para adaptarse a las diferentes condiciones del mercado.

  5. Ampliar los mecanismos de control de riesgos. Introducir técnicas de gestión de riesgos más sofisticadas como paradas adaptativas, dimensionamiento de posiciones, etc. para restringir aún más los riesgos.

  6. Evaluación de la estrategia a través de backtesting. Ampliar los tamaños de la muestra y los plazos para las backtests para medir la robustez de los parámetros.

Conclusión

La estrategia de reversión de seguimiento de tendencia dinámica captura oportunidades de reversión a corto plazo a través de la comparación en tiempo real de máximos y mínimos de precios para determinar la dirección y la fuerza de la tendencia, junto con las reglas de 7 cuentas dentro del indicador secuencial JD para el tiempo de negociación.

La fortaleza clave de esta estrategia radica en su rápida respuesta adecuada para la negociación de reversión a corto plazo. Al mismo tiempo, existen riesgos como altas frecuencias de negociación y paradas agresivas. Las direcciones de optimización futuras incluyen ajuste de parámetros, mejora de los controles de riesgos, combinaciones de marcos de tiempo múltiples, etc. A través de optimizaciones e iteraciones continuas, esta estrategia tiene el potencial de convertirse en una poderosa herramienta para capturar eficientemente las señales de reversión a corto plazo.


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

// @NeoButane 7 Dec. 2018
// JD Aggressive Sequential Setup
// Not based off official Tom DeMarke documentation. As such, I have named the indicator JD instead oF TD to reflect this, and as a joke.
//
// Difference vs. TD Sequential: faster trade exits and a unique entry. Made for low timeframes.
// - Highs or lows are compared instead of close.
// - Mirrors only the Setup aspect of TD Sequential (1-9, not to 13)
// - Count maxes out at 7 instead of 9. Also part of the joke if I'm going to be honest here

// v1 - Release - Made as a strategy, 7 count
//    . S/R on 7 count
//   .. Entry on 7 count
//  ... Exit on 5 count or S/R cross

//@version=3
title = "JD Aggressive Sequential Setup"
vers  = " 1.0 [NeoButane]"
total = title + vers
strategy(total, total, 1, 0)

xx        = input(true, "Include S/R Crosses Into Stop Loss")
show_sp   = input(true, "Show Count 1-4")
sp_ct     = 0
inc_sp(x) => nz(x) == 7 ? 1 : nz(x) + 1
sp_up     = high > high[2]
sp_dn     = low < low[2]
sp_col    = sp_up ? green : red
sp_comCol = sp_up ? red : green
sp_ct    := sp_up ? (nz(sp_up[1]) and sp_col == sp_col[1] ? inc_sp(sp_ct[1]) : 1) : sp_dn ? (nz(sp_dn[1]) and sp_col == sp_col[1] ? inc_sp(sp_ct[1]) : 1) : na
sp_com    = sp_ct == 7
sp_sr     = valuewhen(sp_ct == 5, close, 0)
sp_usr    = valuewhen(sp_ct == 7 and sp_up, sma(hlc3, 2), 0)
sp_usr   := sp_usr <= sp_usr[1] * 1.0042 and sp_usr >= sp_usr[1] * 0.9958 ? sp_usr[1] : sp_usr
sp_dsr    = valuewhen(sp_ct == 7 and sp_dn, sma(hlc3, 2), 0)
sp_dsr   := sp_dsr <= sp_dsr[1] * 1.0042 and sp_dsr >= sp_dsr[1] * 0.9958 ? sp_dsr[1] : sp_dsr
locc = location.abovebar
plotchar(show_sp and sp_ct == 1, 'Setup: 1', '1', locc, sp_col, editable=false)
plotchar(show_sp and sp_ct == 2, 'Setup: 2', '2', locc, sp_col, editable=false)
plotchar(show_sp and sp_ct == 3, 'Setup: 3', '3', locc, sp_col, editable=false)
plotchar(show_sp and sp_ct == 4, 'Setup: 4', '4', locc, sp_col, editable=false)
plotshape(sp_ct == 5, 'Setup: 5', shape.xcross, locc, sp_comCol, 0, 0, '5', sp_col)
plotshape(sp_ct == 6, 'Setup: 6', shape.circle, locc, sp_comCol, 0, 0, '6', sp_col)
plotshape(sp_ct == 7, 'Setup: 7', shape.circle, locc, sp_comCol, 0, 0, '7', sp_col)
// plot(sp_sr, "5 Count Support/Resistance", gray, 2, 6)
plot(sp_usr, "7 Count Resistance", maroon, 2, 6)
plot(sp_dsr, "7 Count Support", green, 2, 6)

long  = (sp_com and sp_dn)
short = (sp_com and sp_up)
sl_l  = xx ? crossunder(close, sp_dsr) or (sp_ct == 5 and sp_up) or short : (sp_ct == 5 and sp_up) or short
sl_s  = xx ? crossover(close, sp_usr) or (sp_ct == 5 and sp_dn) or long : (sp_ct == 5 and sp_dn) or long

strategy.entry('L', 1, when = long)
strategy.close('L', when = sl_l)
strategy.entry('S', 0, when = short)
strategy.close('S', when = sl_s)

Más.