Calculo ADX
- Karachiento
- Mensajes: 68
- Registrado: 17 Ago 2018 23:03
Calculo ADX
Buenas tardes. Tengo un problema que me esta costando mucho resolver, a ver si alguien puede darme una mano.
No consigo de ninguna manera que el calculo teorico del ADX coincida con el que calcula la plataforma MT5.
Lo calculo con scripts y con excel según las formulas y procedimientos teóricos y siempre obtengo resultados distintos a los que da la plataforma (parecidos, pero distintos al fin...).
alguien me da alguna idea de donde puede venir la diferencia entre el calculo teorico y el indicador de MT5?
Saludos y Gracias
No consigo de ninguna manera que el calculo teorico del ADX coincida con el que calcula la plataforma MT5.
Lo calculo con scripts y con excel según las formulas y procedimientos teóricos y siempre obtengo resultados distintos a los que da la plataforma (parecidos, pero distintos al fin...).
alguien me da alguna idea de donde puede venir la diferencia entre el calculo teorico y el indicador de MT5?
Saludos y Gracias
Re: Calculo ADX
Hola, Karachiento.
No conozco MT5. Espero que alguien que sí conozca MT5 te pueda ayudar.
Tal como lo diseñó Willder, en el ADX se usa una media móvil que no es la media exponencial estándard (MAE - Moving Average Exponential), si no una propia de él: Media Móvil de Wilder. Podria ser que, estés usando tú o el indicador fe MT5, la media móvil exponencial estándard en lugar de la media móvil de Wilder. Si no usais la misma media móvil es normal que os de resultados diferentes.
Otra cosa a considerar es que si el cálculo de las media móviles es con muy pocos datos en el Excel y con mucho en el MT4, aunque uséis las mismas media, puede que los cálculos no coincidan.
En el cálculo del ADX, se usa el dato del ATR. Y no es lo mismo haber calculado el ATR con la media móvil de Wilder (que es tal como Wilder diseñó el ATR) que haberlo calculado con la media móvil exponencial estándard. Eso también es bueno tener en cuenta.
Ojo, que los datos del Excel y los del MT5 coincidan exactamente.
Saludos.
No conozco MT5. Espero que alguien que sí conozca MT5 te pueda ayudar.
Tal como lo diseñó Willder, en el ADX se usa una media móvil que no es la media exponencial estándard (MAE - Moving Average Exponential), si no una propia de él: Media Móvil de Wilder. Podria ser que, estés usando tú o el indicador fe MT5, la media móvil exponencial estándard en lugar de la media móvil de Wilder. Si no usais la misma media móvil es normal que os de resultados diferentes.
Otra cosa a considerar es que si el cálculo de las media móviles es con muy pocos datos en el Excel y con mucho en el MT4, aunque uséis las mismas media, puede que los cálculos no coincidan.
En el cálculo del ADX, se usa el dato del ATR. Y no es lo mismo haber calculado el ATR con la media móvil de Wilder (que es tal como Wilder diseñó el ATR) que haberlo calculado con la media móvil exponencial estándard. Eso también es bueno tener en cuenta.
Ojo, que los datos del Excel y los del MT5 coincidan exactamente.
Saludos.
Re: Calculo ADX
Karachiento, ¿puedes subir al Foro el Excel para analizarlo y ver si veo algún error? Por cierto puedes ver el código del indicador en esta dirección:
https://www.mql5.com/es/code/7
La fórmula aplicada es, en concreto, ADX = SUM ((+DI - (-DI)) / (+DI + (-DI)), N) / N
Saludos,
X-Trader
https://www.mql5.com/es/code/7
La fórmula aplicada es, en concreto, ADX = SUM ((+DI - (-DI)) / (+DI + (-DI)), N) / N
Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Re: Calculo ADX
Por si sirve, aquí tienes un desarrollo detallado de cómo calcularlo:
https://stockcharts.com/school/doku.php ... _index_adx
Saludos,
X-Trader
https://stockcharts.com/school/doku.php ... _index_adx
Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Re: Calculo ADX
¿La función SUM es la media aritmética?X-Trader escribió: 18 Oct 2018 10:06 La fórmula aplicada es, en concreto, ADX = SUM ((+DI - (-DI)) / (+DI + (-DI)), N) / N
Si es así, creo que la fórmula se desvía de la fórmula original de Wilder, ...
Re: Calculo ADX
No, es sumatorioRafa7 escribió: 18 Oct 2018 10:21 ¿La función SUM es media aritmética?
Si es así, creo que la fórmula se desvía de la fórmula original de Wilder, ...

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Re: Calculo ADX
Gracias, X-Trader.
Hummm, me da la sensación de que la fórmula no es conforme al diseño original de Wilder. Cuando tenga más tiempo la pienso mirar en el libro de Wilder.
Saludos.
Re: Calculo ADX
Gracias, X-Trader.X-Trader escribió: 18 Oct 2018 10:06 La fórmula aplicada es, en concreto, ADX = SUM ((+DI - (-DI)) / (+DI + (-DI)), N) / N
Efectivamente, SUM es sumatorio, y SUM() / N, es la media aritmética.
La fórmula que indicas es la que se usa para calcular la semilla (valor inicial del ADX), que es la media aritmética de los N valores más antigüos. Pero después de los N términos más antigüos, se aplica esta otra fórmula:
ADX= (ADX(ayer) * 13 + DX(hoy)) / 14
La cual está explicada, en castellano, por uno de nuestros foristas, Duk2:
El indicador ADX: Cómo se calcula y cómo se interpreta en el gráfico
En dicho artículo hay enlace a un Excel donde se emplea la fórmula original de Wilder.
Saludos.
- Karachiento
- Mensajes: 68
- Registrado: 17 Ago 2018 23:03
Re: Calculo ADX
Buenos dias
Segun MT5, EURUSD 1H, ADX (14) a las 13:00 = 38.7
Segun excel adjunto = 34.08
Datos High, Low y Close extraidos del servidor (mediante script sobre datos del grafico, por las dudas que al exportar haya diferencias)
Deje correr varias iteraciones para darle tiempo al suavizado, ya que tanto el primer valor del TR como el del ADX es la media aritmética y luego cambia para los demás valores
Saludos y gracias
Segun MT5, EURUSD 1H, ADX (14) a las 13:00 = 38.7
Segun excel adjunto = 34.08
Datos High, Low y Close extraidos del servidor (mediante script sobre datos del grafico, por las dudas que al exportar haya diferencias)
Deje correr varias iteraciones para darle tiempo al suavizado, ya que tanto el primer valor del TR como el del ADX es la media aritmética y luego cambia para los demás valores
Saludos y gracias
- Karachiento
- Mensajes: 68
- Registrado: 17 Ago 2018 23:03
Re: Calculo ADX
Gracias Rafa por el link, es una de las paginas que ya habia consultado y sigo sin hacer coincidir los valores con MT5 

- Karachiento
- Mensajes: 68
- Registrado: 17 Ago 2018 23:03
Re: Calculo ADX
Adjunto resultados segun el excel de Duck2. Hay diferencias en el suavizado de algunos valores respecto al excel anterior, pero sigue sin coincidir con los valores de la plataforma, por mucho.
Me estoy volviendo loco por que estoy seguro que el error debe ser una tonteria, pero no consigo hacer coincidir los resultados
Me estoy volviendo loco por que estoy seguro que el error debe ser una tonteria, pero no consigo hacer coincidir los resultados
Re: Calculo ADX
Karachiento, si revisas el código en MQ5 verás estas líneas:
Es decir, tanto para la media de los +DI como la de los -DI también hay que usar medias exponenciales, ¿has revisado ese punto?
Saludos,
X-Trader
Código: Seleccionar todo
ExtPDIBuffer[i]=ExponentialMA(i,ExtADXPeriod,ExtPDIBuffer[i-1],ExtPDBuffer);
ExtNDIBuffer[i]=ExponentialMA(i,ExtADXPeriod,ExtNDIBuffer[i-1],ExtNDBuffer);
Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Re: Calculo ADX
¿ExponentialMA es la media móvil exponencial estandard? Si es así, ya hemos hallado el problema. Wilder jamás usa la media móvil exponencial estándard en ninguno de sus indicadores (ATR, RSI, ADX, ...) sino que usa su propia media móvil (alisado de Wilder).X-Trader escribió: 18 Oct 2018 14:48 Karachiento, si revisas el código en MQ5 verás estas líneas:
Es decir, tanto para la media de los +DI como la de los -DI también hay que usar medias exponenciales, ¿has revisado ese punto?Código: Seleccionar todo
ExtPDIBuffer[i]=ExponentialMA(i,ExtADXPeriod,ExtPDIBuffer[i-1],ExtPDBuffer); ExtNDIBuffer[i]=ExponentialMA(i,ExtADXPeriod,ExtNDIBuffer[i-1],ExtNDBuffer);
Saludos,
X-Trader
Re: Calculo ADX
Hay que tener en cuenta que el alisado de Wilder de 14 periodos, es asintóticamente equivalente al la EMA(27).
Si se substituye el alisado de Wilder de 14 periodos por la EMA(14), el resultado es brutalmente diferente.
Si se substituye el alisado de Wilder de 14 periodos por la EMA(14), el resultado es brutalmente diferente.
Re: Calculo ADX
En efecto, así es.
Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Si te ha gustado este hilo del Foro, ¡compártelo en redes!