Esta estrategia genera señales comerciales basadas en el cruce del indicador direccional positivo (DI +) y el indicador direccional negativo (DI-) calculado a partir del rango verdadero promedio (ATR). Pertenece a la estrategia de seguimiento de tendencias que identifica los puntos de inversión de tendencias a través del cruce de DI + y DI-. ATR se utiliza para establecer niveles de stop loss y take profit.
Calcular el ATR(14): Calcular el rango verdadero promedio durante los últimos 14 días utilizando los precios altos, bajos y cerrados.
Calcular el DI+ y el DI-:
El valor de las emisiones de gases de efecto invernadero se calculará en función de las emisiones de gases de efecto invernadero.
El valor de las emisiones de gases de efecto invernadero se calculará en función de las emisiones de gases de efecto invernadero.
Donde UP es la diferencia entre el máximo actual y el cierre anterior, DOWN es la diferencia entre el mínimo actual y el cierre anterior, N es el período del parámetro, por defecto a 14, y ATNR es el ATR calculado a partir del paso 1.
Determinar la entrada y salida:
Cuando DI+ cruza DI-, se genera una señal de compra.
Cuando DI+ cruza por debajo de DI-, se genera una señal de venta.
Establecer el stop loss y tomar el beneficio:
El precio de entrada menos ATR multiplicado por el multiplicador de pérdida de parada
El precio de entrada más el ATR multiplicado por el multiplicador de los beneficios
La pérdida de parada corta es el precio de entrada más ATR multiplicado por el multiplicador de pérdida de parada
El precio de entrada menos el ATR multiplicado por el multiplicador del beneficio
El uso del cruce DI+/DI- para determinar la inversión de tendencia proporciona una señal oportuna para una nueva dirección de tendencia.
El ATR como indicador dinámico de stop loss/take profit puede establecer niveles razonables basados en la volatilidad del mercado.
La estrategia tiene pocos parámetros y es fácil de entender e implementar.
Los resultados de las pruebas de retroceso muestran que esta estrategia tiene un factor de ganancia positivo y supera a Buy & Hold.
Riesgo de falsas señales por cruce de DI
No se incluyen en el grupo de riesgo las empresas que se encuentran en situación de riesgo.
Ineficaz en el mercado limitado por el rango
Riesgo de utilización
Añadir filtros como promedio móvil para evitar señales falsas en los períodos de rango.
Implementar el tamaño de la posición como la fracción fija o Martingale para controlar el descenso y aumentar la rentabilidad.
Optimizar los parámetros ATR para que coincidan con la volatilidad de los diferentes instrumentos de negociación.
Optimización de parámetros en el período DI, el período ATR, el multiplicador ATR, etc. para encontrar la combinación óptima.
Agregue la lógica de la noche y la sesión temprana para ejecutar la estrategia 24/7.
Esta es una estrategia simple y práctica que genera señales de cruce DI y establece un stop loss/take profit dinámico con ATR. Con pocos parámetros, es fácil de probar y optimizar. Pero el cruce DI es menos efectivo durante la consolidación. En el futuro, combinar filtros adicionales es el área de mejora principal. En general, esta estrategia demuestra un rendimiento estable adecuado para el comercio diario a corto plazo.
/*backtest start: 2022-11-06 00:00:00 end: 2023-11-12 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/ // © TheHulkTrading //@version=4 strategy("DI Crossing Daily Straregy HulkTrading", overlay=true) // ATR Multiplier. Recommended values between 1..4 atr_multiplier = input(1, minval=1, title="ATR Multiplier") //Length of DI. Recommended default value = 14 length = input(14, minval=1, title="Length di") up = change(high) down = -change(low) range = rma(tr, 14) //DI+ and DI- Calculations di_plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, length) / range) di_minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, length) / range) //Long and short conditions longCond = crossover(di_plus,di_minus) shortCond = crossunder(di_plus,di_minus) //Stop levels and take profits stop_level_long = strategy.position_avg_price - atr_multiplier*atr(14) take_level_long = strategy.position_avg_price + 2*atr_multiplier*atr(14) stop_level_short = strategy.position_avg_price + atr_multiplier*atr(14) take_level_short = strategy.position_avg_price - 2*atr_multiplier*atr(14) //Entries and exits strategy.entry("Long", strategy.long, when=longCond) strategy.exit("Close Long","Long", stop=stop_level_long, limit = take_level_long) strategy.entry("Short", strategy.short, when=shortCond) strategy.exit("Close Short","Short", stop=stop_level_short, limit = take_level_short)