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.
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.
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:
La lógica para la generación de señales comerciales es:
La lógica de stop loss es:
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.
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:
La principal ventaja de esta estrategia es su rápida respuesta, que puede capturar eficazmente las grandes fluctuaciones causadas por eventos a corto plazo.
La estrategia de inversión de tendencias dinámicas de seguimiento también conlleva algunos riesgos:
Para mitigar los riesgos mencionados anteriormente, la estrategia puede optimizarse en los siguientes aspectos:
Hay un amplio margen para optimizar aún más la estrategia dinámica de seguimiento de tendencias, principalmente en las siguientes direcciones:
Determinar la dirección de la tendencia principal en los marcos de tiempo más altos para evitar negociar en contra de ella.
Combinaciones con otros indicadores Incorporar métricas de volatilidad, datos de volumen, etc. para mejorar la calidad de la señal.
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.
Optimización de parámetros como períodos de conteo, sesiones comerciales, dimensionamiento de posiciones, etc. para adaptarse a las diferentes condiciones del mercado.
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.
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.
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)