Estrategia de negociación de la media móvil de DMI

El autor:¿ Qué pasa?, Fecha: 2023-09-13 14:42:19
Las etiquetas:

Recientemente he desarrollado una nueva estrategia de negociación cuantitativa basada principalmente en el indicador DMI para identificar los mínimos y los máximos en el mercado.

Estrategia lógica

El indicador DMI, abreviatura de Average Directional Movement Index, fue creado por Welles Wilder en la década de 1970 para medir la tendencia y la fuerza del mercado.

  • +DI: representa la fuerza de la tendencia alcista
  • -DI: representa la fuerza de la tendencia bajista
  • ADX: representa la fuerza general de la tendencia

Cuando +DI cruza por encima de -DI, indica un fortalecimiento de la tendencia alcista y se puede considerar una posición larga.

La lógica central de esta estrategia es la siguiente:

  1. Ir largo cuando +DI cae por debajo de 10 y -DI sube por encima de 40
  2. Ir corto cuando -DI cae por debajo de 10 y +DI sube por encima de 40

Es decir, cuando el DI inverso difiere significativamente del DI a plazo, se puede juzgar que es probable que la tendencia actual se invierta y se puede tomar una posición comercial inversa de manera adecuada.

Para filtrar el ruido, esta estrategia adopta una media móvil de DI con parámetros establecidos como:

  • El período de +DI y -DI es 11
  • El período de suavización de ADX es de 11

Al ajustar los parámetros de la media móvil, se puede ajustar la frecuencia de las señales de negociación.

Esta estrategia se aplica principalmente a la negociación de opciones de índice NIFTY50. También se puede utilizar en otros productos. Específicamente para la negociación, elija opciones at-the-money, establezca el stop loss en 20%, agregue posiciones si la pérdida excede el 10%, pero deténgase si la pérdida se expande por encima del 20% del capital inicial.

Ventajas de la estrategia

En comparación con las estrategias cruzadas simples de DI, esta estrategia utiliza medias móviles de DI para filtrar el ruido y reducir las operaciones, reduciendo así los costes de transacción y el deslizamiento.

En comparación con las estrategias de seguimiento de tendencias puras, esta estrategia es más precisa para detectar los puntos de inversión de tendencias, lo que permite entradas oportunas alrededor de las curvas.

La optimización de la estrategia es simple con parámetros flexibles para ajustar el rendimiento.

Advertencias sobre el riesgo

Esta estrategia solo proporciona señales direccionales, y se deben establecer requisitos específicos sobre el stop loss y el take profit de acuerdo con las preferencias personales de riesgo.

El DMI puede producir muchas señales falsas durante los períodos de rango.

Los cruces de DI no pueden predecir completamente las inversiones de tendencia.

Conclusión

Al seleccionar con promedios móviles DI, esta estrategia puede identificar de manera efectiva las oportunidades de inversión de tendencia. En comparación con otras estrategias de seguimiento de tendencia, tiene la ventaja de tener capacidades de reconocimiento de inversión más fuertes. En general, esta estrategia tiene ajuste de parámetros flexible y puede usarse como un módulo en sistemas de negociación cuantitativos. Preste atención a las señales falsas y evalúe adecuadamente el régimen del mercado al usarla.


/*backtest
start: 2023-09-05 00:00:00
end: 2023-09-12 00:00:00
period: 1m
basePeriod: 1m
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/
// © email_analysts
// This code gives indication on the chart to go long based on DMI and exit based on RSI. 
//Default value has been taken as 14 for DMI+ and 6 for RSI.
//@version=5
strategy(title="DMI Strategy", overlay=false)
lensig = input.int(11, title="ADX Smoothing", minval=1, maxval=50)
len = input.int(11, 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)
//plot(adx, color=#F50057, title="ADX")
plot(plus, color=color.green, title="+DI")
plot(minus, color=color.red, title="-DI")
hlineup = hline(40, color=#787B86)
hlinelow = hline(10, color=#787B86)

buy = plus < 10 and minus > 40
if buy
    strategy.entry('long', strategy.long)

sell = plus > 40 and minus < 10
if sell
    strategy.entry('short', strategy.short)



Más.