Esta estrategia se basa en el indicador DMI, monitoreando el cruce de +DI y -DI para determinar la dirección de tendencia de los precios de las acciones y utilizando el indicador ADX para identificar la fuerza de la tendencia, con el fin de lograr el seguimiento de tendencias.
Esta estrategia utiliza dos componentes del indicador DMI: +DI y -DI. +DI mide el impulso ascendente. El cruce ascendente de +DI sobre -DI indica el fortalecimiento del impulso ascendente. -DI mide el impulso descendente. El cruce descendente de -DI por debajo de +DI indica el fortalecimiento del impulso descendente.
Cuando +DI cruza por encima de -DI, una tendencia alcista está emergiendo y la estrategia va a largo. Después de ingresar a la posición, un stop loss lineal trasero rastrea un cierto porcentaje del precio más alto. A medida que el precio retrocede, el precio de stop loss se moverá hacia abajo en consecuencia, bloqueando algunas de las ganancias anteriores hasta cierto punto.
Cuando -DI cruza por debajo de +DI, una tendencia bajista se hace cargo y la estrategia cierra su posición. El indicador ADX se puede utilizar para identificar la fuerza de la tendencia. Cuanto mayor sea el ADX, más pronunciada será la tendencia. Como tal, la estrategia emplea ADX como indicador auxiliar para la entrada, solo ingresando a una posición cuando ADX está dentro de un cierto rango.
En resumen, esta estrategia captura los puntos de inflexión en las tendencias de precios para realizar el seguimiento de tendencias de promedio móvil.
Las principales ventajas de esta estrategia se reflejan en tres aspectos:
El uso del indicador DMI para determinar la dirección de las tendencias de los precios es preciso y confiable.
La aplicación del indicador ADX para identificar la fuerza de las tendencias evita el comercio frecuente en mercados agitados, lo que hace que la estrategia sea más robusta.
El mecanismo lineal de stop trailing puede ajustar dinámicamente las posiciones de stop loss y salir temprano cuando las tendencias se invierten, bloqueando ganancias parciales para controlar eficazmente los riesgos.
Las reglas de la estrategia son simples y claras, fáciles de entender e implementar, adecuadas para el comercio algorítmico.
Los principales riesgos de esta estrategia son:
La posibilidad de que el indicador DMI falle en ciertos mercados especiales. DMI no se aplica a todos los mercados. Puede generar señales falsas cuando la tendencia no es pronunciada.
El riesgo de que el precio caiga por debajo del nivel de stop loss antes de revertirse hacia abajo.
El riesgo de ajustes incorrectos de parámetros ADX. Los parámetros ADX afectan directamente los resultados de cronometraje de la estrategia. El rendimiento se verá afectado si se establece demasiado alto o demasiado bajo.
La facilidad de ser detenido en una tendencia alcista que avanza rápidamente debido al método de detención lineal.
Los riesgos pueden reducirse aún más mediante el ajuste de parámetros, pérdidas de parada estrictas, optimización de la arquitectura del programa, etc.
Esta estrategia puede optimizarse en varios aspectos:
Utilice otros indicadores como MACD, KDJ para el juicio auxiliar para mejorar la estabilidad de la estrategia.
Los métodos de prueba de pérdidas de parada diferentes, tales como paradas de paradas de curva, paradas de paradas basadas en el tiempo, etc.
Añadir mecanismos de dimensionamiento de posiciones para construir posiciones gradualmente después de que se confirme la dirección de la tendencia, mejorando la rentabilidad.
Incorporar factores de alta frecuencia, aprendizaje automático, etc. para optimizar dinámicamente los parámetros DMI y ADX para una mayor inteligencia.
Añadir módulos programáticos de control de riesgos mediante presupuestos de riesgos, etc., para gestionar de manera estricta el aprovechamiento máximo.
Se pueden combinar diversos medios para mejorar eficazmente la eficiencia, estabilidad y seguridad de la estrategia.
La lógica general de esta estrategia es clara y fácil de entender, utilizando el indicador DMI para determinar la dirección de la tendencia de los precios y el indicador ADX como un indicador auxiliar de la fuerza de la tendencia, con paradas lineales que controlan efectivamente el riesgo. La estrategia es relativamente estable, pero aún así requiere precaución contra ciertos riesgos. A través de la optimización y pruebas continuas, se pueden hacer mejoras incrementales en la robustez y eficiencia de la estrategia. Se cree que esta estrategia tiene el potencial de convertirse en un excelente representante de las estrategias de seguimiento de tendencias promedio móvil.
/*backtest start: 2023-02-13 00:00:00 end: 2024-02-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ //@version=5 //1.0 - 240202 @caddjax strategy(title = "+DI Crossover", overlay=false) //DMI + ADX Chart w/ overlay // © jrregencia lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50) len = input.int(6, minval=1, title="DI Length") up = ta.change(high) down = -ta.change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) trur = ta.rma(ta.tr, len) plus = fixnan(100 * ta.rma(plusDM, len) / trur) minus = fixnan(100 * ta.rma(minusDM, len) / trur) sum = plus + minus adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig) adxmax = input.int(50, title="ADX Max Buying Area", minval=1, maxval=100) adxmin = input.int(0, title="ADX Min Buying Area", minval=0, maxval=99) //DI cross alert DIPcross = ta.crossover(plus, minus) ? plus : na plotshape(DIPcross, style = shape.cross , color=color.white, location=location.absolute) plot(adx, color=color.rgb(255, 238, 0, 23), title="ADX", linewidth=2) p1 = plot(plus, color=color.rgb(16, 137, 0, 31), title="+DI", linewidth=1) p2 = plot(minus, color=color.rgb(143, 82, 255, 25), title="-DI", linewidth=1) adxmaxl = hline(adxmax, title="ADX MaxLine", color=color.silver, linestyle=hline.style_solid) adxminl = hline(adxmin, title="ADX MinLine", color=color.silver, linestyle=hline.style_solid) fill(p1, p2, title="Cloud Fill", color = plus > minus ? color.teal : color.red, transp=50) fill(adxmaxl, adxminl, title="ADX Fill", color=color.silver, transp=90) // Configure trail stop level with input options (optional) longTrailPerc = input.float(3, title="Trail Long Loss (%)", minval=0.0, step=0.1) * 0.01 // Determine trail stop loss prices longStopPrice = 0.0 // Determine entry condition enterLong = ta.crossover(plus, minus) ? plus : na longStopPrice := if strategy.position_size > 0 stopValue = high[1] * (1 - longTrailPerc) math.max(stopValue, longStopPrice[1]) else 0 // Submit entry orders if enterLong strategy.entry("EL", strategy.long) // Submit exit orders for trail stop loss price if strategy.position_size > 0 strategy.exit("XL TRL STP", stop=longStopPrice)