Esta estrategia combina dos poderosos indicadores integrados en TradingView: el índice de movimiento direccional (DMI) y el oscilador de precios deteriorado (DPO) para formar una base confiable para las decisiones comerciales. La lógica central de la estrategia es determinar si el valor de DPO es mayor que 0 cuando se produce una cruz dorada de DMI, y generar una señal larga si es así; o determinar si el valor de DPO es menor que 0 cuando se produce una cruz muerta de DMI, y generar una señal corta si es así. Esto puede filtrar eficazmente muchas señales falsas generadas durante las oscilaciones de rango en el mercado, generando así solo señales comerciales cuando se forma una tendencia, evitando pérdidas de parada repetidas durante las oscilaciones.
Esta estrategia utiliza principalmente el indicador DMI para determinar la dirección y la fuerza de la tendencia. El indicador DMI consta de tres curvas: +DI, -DI y ADX. +DI representa la fuerza de la tendencia alcista, -DI representa la fuerza de la tendencia bajista, y su cruce puede determinar la dirección de la tendencia actual; ADX representa la fuerza de la tendencia, cuanto mayor sea el valor, más obvia será la tendencia. Sin embargo, ADX no es bueno para identificar rangos de baja volatilidad, por lo que esta estrategia elimina la determinación ADX y solo utiliza los cruces +DI y -DI para determinar la dirección de la tendencia.
Para filtrar las señales falsas generadas en las oscilaciones de rango, se introduce el indicador DPO para el juicio auxiliar. El indicador DPO representa el grado de desviación del precio de su carril medio. Cuando el precio está por encima del carril medio, el DPO es positivo, y cuando está por debajo, es negativo. Esta estrategia utiliza la positividad y la negatividad del indicador DPO para juzgar si está actualmente en una tendencia. Si el indicador DMI se cruza pero el indicador DPO está cerca del nivel 0, se determina que es una oscilación y no se genera ninguna señal comercial.
Específicamente, la lógica del juicio es:
Cuando +DI cruza por encima de -DI, es una cruz dorada, lo que indica un mercado alcista. En este momento, si el indicador DPO es mayor que 0, confirma que actualmente está en una tendencia al alza, y se genera una señal larga.
Cuando -DI se cruza por debajo de +DI, es una cruz muerta, lo que indica un mercado bajista.
Si +DI/-DI se cruza pero el indicador DPO está cerca de 0, se determina como oscilación y no se genera ninguna señal.
La mayor ventaja de esta estrategia combinada es su alta precisión en la identificación de tendencias, generando señales comerciales sólo cuando se producen inversiones reales de tendencia, evitando así pérdidas repetidas en intervalos oscilantes.
Utilizando el indicador DMI para determinar la dirección y la fuerza de la tendencia, es un indicador técnico maduro y confiable.
Filtrar señales falsas en oscilaciones de rango con la ayuda del indicador DPO, generar señales solo cuando se forma una tendencia, evitando pérdidas.
La combinación de múltiples indicadores puede servir como verificación mutua y mejorar la fiabilidad de las señales.
La lógica de la estrategia es simple y fácil de entender e implementar, adecuada para operaciones automatizadas o manuales.
Dado que solo opera en tendencias, puede obtener una relación de riesgo-recompensación relativamente alta.
Aunque se trata de una estrategia muy fiable, hay que tener en cuenta los siguientes riesgos:
Los acontecimientos repentinos pueden provocar grandes movimientos unilaterales en el mercado, posiblemente perdiendo tales oportunidades de tendencia.
El propio indicador DMI también puede generar señales erróneas, y este riesgo no se puede evitar por completo.
Los parámetros óptimos deben determinarse mediante pruebas retrospectivas repetidas.
Los costos de negociación tendrán cierto impacto en las ganancias, por lo que se debe controlar la frecuencia de negociación.
Todavía hay margen para una mayor optimización de esta estrategia:
Se pueden probar diferentes combinaciones de parámetros para encontrar los parámetros óptimos para reducir el retraso de la señal y aumentar la tasa de ganancia.
Puede combinarse con otros indicadores como KDJ, MACD, etc. para la verificación para mejorar la precisión de la señal.
Los parámetros de adaptación se pueden establecer de acuerdo con diferentes variedades, ciclos, etc. para hacer que la estrategia sea más adaptable.
Las paradas dinámicas se pueden configurar para controlar pérdidas individuales.
Los métodos de aprendizaje automático se pueden utilizar para optimizar el tiempo de entrada y salida para obtener mayores rendimientos.
Esta estrategia combina las ventajas de los indicadores DMI y DPO para tener una alta precisión en el juicio de las reversiones de tendencia, y puede identificar de manera confiable la generación de tendencias. Al mismo tiempo, el uso del indicador DPO filtra efectivamente el ruido causado por las oscilaciones de rango, evitando operaciones ineficaces. Esto lo convierte en una estrategia eficiente adecuada para el comercio automatizado y la adopción manual. Por supuesto, todavía hay muchos detalles que se pueden optimizar aún más para un mejor rendimiento estratégico.
/*backtest start: 2022-12-28 00:00:00 end: 2024-01-03 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("DMI DPO Guard Strategy", calc_on_order_fills=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, currency="USD", commission_type=strategy.commission.percent, commission_value=0.25) ///Tradingview's DMI indicator logic/// len = input(34, minval=1, title="DI Lookback") up = change(high) down = -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 = rma(tr, len) plus = fixnan(100 * rma(plusDM, len) / trur) minus = fixnan(100 * rma(minusDM, len) / trur) plot(plus, color=color.orange, title="+DI") plot(minus, color=color.aqua, title="-DI") period_ = input(34, title="Length", minval=1) isCentered = input(false, title="Centered") barsback = period_/2 + 1 ma = sma(close, period_) dpo = isCentered ? close[barsback] - ma : close - ma[barsback] plot(dpo, offset = isCentered ? -barsback : 0, title="Detrended Price Oscillator", color=#C0C000) hline(0, title="Zero Line", color = #C0C0C0) long = crossover(plus, minus) and (dpo > 0) short = crossunder(plus, minus) and (dpo < 0) strategy.entry("Long", strategy.long, when=long) strategy.entry("Short", strategy.short, when=short)