Discusión sobre el artículo "Aprendiendo a diseñar un sistema de trading con ADX" - página 2

 
Hola. Acabo de empezar a aprender sobre adx y dmi para par de meses. y me gustaría que hay un ea para esto. ya que este es el indicador de retraso. tal vez marco de tiempo M15 es más adecuado. se puede hacer uno? ¿dónde puedo contactar con usted para plazo y conditon? gracias
 

Hola Mohamed,

En lugar de:

   double ADXArray0[];
   double ADXArray1[];
...
   double ADXValue=NormalizeDouble(ADXArray0[0],2);
   double ADXValueLast=NormalizeDouble(ADXArray1[1],2);

¿No sería suficiente?:

      double ADXArray[];
...
      double ADXValue=NormalizeDouble(ADXArray[0],2);
      double ADXValueLast=NormalizeDouble(ADXArray[1],2);

Saludos,

Juan Luis

Learn how to design a trading system by ADX
Learn how to design a trading system by ADX
  • www.mql5.com
In this article, we will continue our series about designing a trading system using the most popular indicators and we will talk about the average directional index (ADX) indicator. We will learn this indicator in detail to understand it well and we will learn how we to use it through a simple strategy. By learning something deeply we can get more insights and we can use it better.
 
Juan Luis De Frutos Blanco #:

Hola Mohamed,

En lugar de:

¿No sería suficiente?:

Saludos,

Juan Luis

Hola Juan,

Tienes razón, también puede ser como lo que comentas.


Saludos,

 
Buen artículo: una de las patas del EA que estoy construyendo en este momento.
Gracias Mohamed. 🏅🏅🏅

 
Usted tiene gran article.I encanta usar ADX para mi scalping.I tienen idea de que cuando la línea ADX por encima de 25 y dmi más cruzar hasta dmi menos, el color de la vela se convirtió en color verde indican que la tendencia es alcista y viceversa.Estoy tratando de código, pero no suerte hasta ahora.
 
1
 

Excelente articulo, sin embargo he encontrado un error en uno de ellos, y tambien he encontrado una oportunidad para un consejo. El error es con los CopyBuffers, y usando el mismo indice de buffer para el mismo handle. Un handle de indicador en MQL5 solo puede acceder a un buffer especifico usando su indice de buffer unico correspondiente en una llamada a la funcion CopyBuffer().


Así que cuando pones:

CopyBuffer(ADXDef,0,0,3,ADXArray0);
CopyBuffer(ADXDef,0,0,2,ADXArray1);
CopyBuffer(ADXDef,1,0,3,PDIArray);
CopyBuffer(ADXDef,2,0,3,NDIArray);


Debe ser:

CopyBuffer(ADXDef,0,0,3,ADXArray0);
CopyBuffer(ADXDef,1,0,2,ADXArray1);
CopyBuffer(ADXDef,2,0,3,PDIArray);
CopyBuffer(ADXDef,3,0,3,NDIArray);


Los puntos clave con respecto a los manejadores de indicador y los buffers son:
  • Indexación única: Cada manejador de indicador gestiona un conjunto de búferes internos, cada uno identificado por un índice único (empezando por 0).
  • Un manejador, un índice: Cuando se utiliza CopyBuffer(handle, buffer_index, ...) se especifica dequé búfer asociado a ese handle se quieren copiar los datos.
  • Llamadas múltiples: Si un indicador tiene varios búferes de datos (por ejemplo, una banda alta y una banda baja de un canal), debe llamar a CopyBuffer() varias veces, utilizando el mismo manejador pero con diferentes índices de búfer (por ejemplo, índice 0 para la banda superior, índice 1 para la banda inferior).
No se pueden tener dos llamadas separadas a CopyBuffer para el mismo índice de buffer dentro del mismo handle que de alguna manera apunten a datos diferentes, ya que el índice es el identificador único para la serie de datos dentro de ese handle.


Supongo que se trata de un error tipográfico, pero pensé que debía señalarlo por si alguien más se confunde. Era correcto en el código completo, pero no en el ejemplo.


Ahora el pequeño consejo...

No es gran cosa, pero sin duda le ahorrará algunas pulsaciones innecesarias, cuando se escribe:


 Comment("Simple ADX System - Signal is ",signal,"\n""ADX Value is ", ADXValue,
   "\n""ADX Value Last is ", ADXValueLast, "\n""+DI Value is ", PDIValue,
   "\n""-DI Value is ", NDIValue);


Hay algunas comillas extra que no necesitas. Para simplificar, podrías hacer esto:


 Comment("Simple ADX System - Signal is ",signal,"\nADX Value is ", ADXValue,
   "\nADX Value Last is ", ADXValueLast, "\n+DI Value is ", PDIValue,
   "\n-DI Value is ", NDIValue);


Aparte de eso, encontré el artículo muy informativo y detallado.


 

La única otra cosa que añadiría aquí es el manejo de errores en OnInit() y DeOnit(), y cambiar el nombre de la variable de ADXDef a h_ADXDef (o handle_ADXDef), para que sea más claro al leer el código y sólo lo hace un mejor identificador que muestra su propósito específico.

En OnInit():


  if(h_ADXDef == INVALID_HANDLE)
   {
      Print("Error creating indicator handles: ", GetLastError());
      return(INIT_FAILED);
   }


Y, en DeOninit():


if(h_ADXDef != INVALID_HANDLE) IndicatorRelease(h_ADXDef);