Discusión sobre el artículo "Zigzag universal"

 

Artículo publicado Zigzag universal:

El Zigzag es uno de los indicadores más populares entre los usuario de MetaTrader 5. En este artículo se han analizado las posibilidades de creación de diferentes versiones del Zigzag. Como resultado, obtenemos un indicador universal con amplias posibilidades para la ampliación de la funcionalidad, el cual es muy cómodo utilizar en el desarrollo de los Asesores Expertos y otros indicadores.

Otras versiones devuelven constantemente los errores, lo que complica su uso incluso para la observación visual. Con los indicadores que trabajan rápido y sin errores, igualmente surgen dificultades al usarlos para el desarrollo del EA u otro indicador. La cosa es que no es tan fácil extraer las indicaciones del Zigzag e interpretarlas.


Fig. 1. Indicador ZigZag

Autor: Dmitry Fedoseev

 

Ya que por fin tenemos un indicador OOP, ¿qué sentido tiene llamarlo desde el Asesor Experto (iCustom), cuando podemos crear un objeto indicador calculado en el propio Asesor Experto y acceder a los vértices mediante un determinado operador []? Debería ser más rápido de esa manera.

No hay suficientes ticks en los datos de origen. Probablemente, todos los artículos de ahora (con la aparición de una implementación rápida y sin errores de CopyTicks) deberían tener en cuenta este hecho. No podemos pretender que sólo tenemos barras.

Para el artículo Gracias. Para los principiantes es probablemente el mejor.

 
fxsaber:

1. Ya que por fin tenemos un indicador OOP, ¿qué sentido tiene llamarlo desde el Asesor Experto (iCustom), cuando podemos crear un objeto indicador calculado en el propio Asesor Experto y acceder a los vértices a través de un determinado operador []? Debería ser más rápido de esa manera.

2. No hay suficientes ticks en los datos de origen. Probablemente, todos los artículos ahora (con la aparición de una implementación rápida y no buggy de CopyTicks) deberían tener en cuenta este hecho. No podemos pretender que sólo tenemos barras.

3. Para el artículo Gracias. Para los principiantes, es probablemente una buena.

1. Esta es una idea equivocada. El indicador trabaja usando los almacenadores intermedi arios del indicador y los parámetros rates_total y prev_calculate. El punto del indicador está en usar buffers. No hay búferes del indicador en el Asesor Experto, así como rates_total y prev_calculate.

2. No estoy de acuerdo. Es una cuestión personal. Y en general, el punto es sólo que uno debe volver a calcular en ticks en cada barra.

3. Se plantea una cuestión filosófica: ¿quién es un principiante?

 
Dmitry Fedoseev:

1. esta es una idea equivocada. El indicador funciona utilizando los búferes del indicador y los parámetros rates_total y prev_calculate. El punto del indicador es en el uso de búferes. No hay búferes indicador en el Asesor de Expertos, así como no hay rates_total y prev_calculate.

¿Por qué el objeto ZZ no puede ser una fuente de datos completa para el Asesor Experto? Para crear diferentes entidades (diferentes programas) y luego conectarlos a través de iCustom - es más fácil crear un objeto directamente en el Asesor Experto. Cuantos menos "detalles", más fiable será el "mecanismo".

Pero esto es probablemente un argumento eterno. OOP sólo lo inclina hacia un lado aún más.

2. No estoy de acuerdo. Es una cuestión personal. Y de todos modos, el punto es sólo que los ticks deben ser recalculados en cada barra.

Hay que ignorar los ticks.

3. Se plantea una cuestión filosófica: ¿quién es un principiante?

¿Quién puede encontrar este artículo útil.
 
fxsaber:

1. ¿Por qué el objeto ZZ no puede ser una fuente de datos completa para el Asesor Experto? Para crear diferentes entidades (diferentes programas) y luego conectarlos a través de iCustom - es más fácil crear un objeto directamente en el Asesor Experto. Cuantos menos "detalles", más fiable será el "mecanismo".

2. Pero esto es probablemente una eterna disputa. OOP sólo lo inclina hacia un lado aún más.

3. Da garrapatas para ignorar.

Quién podría beneficiarse de este artículo.

1. OOP no tiene nada que ver con la solución de este problema. Además, la fuente de datos más completa para el Asesor Experto es el indicador. El Asesor Experto no proporciona las capacidades funcionales para el procesamiento de series de tiempo que el indicador hace.

2. El problema de la POO es que muchos programadores adultos no la estudiaron de niños y, por tanto, tienen dificultades para entenderla y aplicarla.

3. ¿Dónde está el gráfico de ticks? Debe haber un gráfico de ticks. Si no hay gráfico de tick, crear indicadores en gráficos de tick es un proceso artesanal.

4. Puede ser útil para todos. Esta es la quintaesencia del zigzag :) En mi opinión, el valor del artículo no está en el hecho de que en él se aplique la POO. La parte con POO es una parte rutinaria sin ningún valor especial en mi opinión. Pero el principio del artículo, donde se plantea la creación de un indicador por hi-lo y por cloze, merece la pena ser leído por todo el mundo (salvo raras excepciones).

 
Dmitry Fedoseev:

1. La programación orientada a objetos no tiene nada que ver con la solución de este problema. Además, la fuente de datos más completa para el Asesor Experto es el indicador. El Asesor Experto no proporciona las capacidades funcionales para procesar series temporales, que proporciona el indicador.

Al menos un argumento. Lo único que les gusta repetir es la preparación garantizada de series de tiempo en los indicadores al entrar en OnCalculate. Y OnTick no tiene tal garantía. Es sólo 99,99999999% en OnTick, no 100%.

2. El problema de la programación orientada a objetos es que muchos programadores adultos no la estudiaron de niños y por eso tienen dificultades para entenderla y aplicarla.

Un indicador es un objeto. La POO también permite crear objetos. Pero sólo no crear entidades adicionales en forma de programas separados.

3. ¿Dónde está el gráfico de tick? Debe haber un gráfico de tick. Si no lo hay, la creación de indicadores en gráficos de tick es un proceso artesanal.

¿Qué tiene que ver un gráfico de tick y los datos iniciales en forma de ticks? A un Asesor Experto no le importa si hay gráficos o no. Y si un indicador es capaz de analizar el historial de ticks, significa que está construido sobre ticks. Y la falta de visualización es un saludo a VPS. Es decir, no es necesaria en algunas situaciones.

4. Puede ser útil para todos. Esta es la quintaesencia de un zigzag :) En mi opinión, el valor del artículo no está en el hecho de que en él se aplique la POO. La parte con POO es una parte rutinaria sin ningún valor especial en mi opinión. Pero el principio del artículo, donde se plantea la creación de un indicador por hi-lo y por cloze, merece la pena ser leído por todo el mundo (salvo raras excepciones).

Ya lo he dicho: para principiantes.
 
fxsaber:

Al menos un argumento. Lo único que les gusta repetir es la garantía de preparación de series temporales en los indicadores al entrar en OnCalculate. Y no hay tal garantía en OnTick. Es sólo 99.99999999% en OnTick, no 100%.

Un indicador es un objeto. La programación orientada a objetos también permite crear objetos. Pero no crear entidades adicionales en forma de programas separados.

¿Qué tiene que ver un gráfico de ticks y los datos iniciales en forma de ticks? Al Asesor Experto no le importa si hay gráficos o no. Y si un indicador es capaz de analizar el historial de ticks, significa que se basa en ticks. Y la falta de visualización es un saludo a VPS. Es decir, no es necesario en algunas situaciones.

He dicho enseguida - para principiantes.
Después de lo que has escrito, ni siquiera deberías ser considerado un principiante, sino un parvulario.
 

Lo más difícil es escribir un artículo para principiantes. No todo el mundo puede hacerlo.

Más difícil aún es escribir un artículo que sea útil tanto para principiantes como para expertos.

Sería bueno escribir en cada artículo a quién va dirigido. Qué secciones son para principiantes, cuáles para especialistas, cuáles complementan la documentación, referencias cruzadas a publicaciones ya existentes sobre este tema, etc.

Si el artículo es para principiantes, se suele escribir si el material es suficiente para entenderlo -- y si puede haber dificultades para entender el material, con qué material es mejor familiarizarse antes de leerlo.

p.s. De toda la literatura técnica, son los libros de texto para principiantes los que se convierten en superventas.

 
Dmitry Fedoseev:

1. esta es una idea equivocada. El indicador funciona utilizando los búferes del indicador y los parámetros rates_total y prev_calculate. El punto del indicador es en el uso de búferes. No hay búferes indicador en el Asesor de Expertos, así como rates_total y prev_calculate.

Dmitry, usted está equivocado aquí. La idea de trabajar con Zig Zag a través de una clase, obviando iCustom, es muy correcta. De hecho, un zig zag es una lista de líneas, cada una de las cuales tiene un montón de propiedades:

  • Dirección de la línea (arriba/abajo)
  • Índice de la barra donde empieza la línea;
  • Índice de la barra donde termina la línea;
  • El precio del comienzo de la línea;
  • El precio al que termina la línea;
  • Hora de inicio de la línea;
  • Hora de finalización de la línea;
  • ...

En lugar de trabajar con información de dos bits a través del búfer: hay línea/no hay línea, necesitamos crear una clase en la que toda la información posible se calcule automáticamente y se alimente cómodamente directamente en el Asesor Experto o directamente en el indicador. Al mismo tiempo, una sola clase debe ser capaz de trabajar con diferentes tipos de datos, por ejemplo, con barras, precios de cierre o flujo de ticks.

En resumen: es útil para los principiantes. Pero el uso de OOP todavía les asustará.

 
Andrey F. Zelinsky:

p.s. De toda la literatura técnica, son los libros de texto para principiantes los que se convierten en superventas.

Ninguna obra para especialistas puede convertirse en bestseller por definición: especialistas hay pocos.

Por si acaso, no me incluyo entre ellos. El artículo es para los que acaban de empezar a dominar o están a punto de hacerlo. Es bueno.

Para que se entienda bien, voy a dar enlaces a dos artículos.

  1. Escribiendo indicadores - para principiantes OOP.
  2. Escribiendo Asesores Expertos - para expertos.
MQL's OOP notes: Singleton, Command queue, and Template method patterns in simple order manager
MQL's OOP notes: Singleton, Command queue, and Template method patterns in simple order manager
  • 2016.10.06
  • //www.mql5.com/en/users/marketeer">
  • www.mql5.com
As the title says this time we'll try to implement a simple object-oriented framework for trading. It's surely simple as a framework, but is probably most complex thing among all that we've discussed...
 
Vasiliy Sokolov:

Dmitry, estás equivocado aquí. La idea de trabajar con Zig Zag a través de una clase, obviando iCustom, es muy correcta. En esencia, un zig zag es una lista de líneas, cada una de las cuales tiene un montón de propiedades:

  • Dirección de la línea (arriba/abajo)
  • Índice de la barra donde empieza la línea;
  • Índice de la barra donde termina la línea;
  • Precio del inicio de la línea
  • Precio del final de la línea;
  • Hora de inicio de la línea;
  • Hora de finalización de la línea;
  • ...

1. En lugar de trabajar con información de dos bits a través de un buffer: hay línea/no hay línea, es necesario crear una clase en la que toda la información posible se calcule automáticamente y se alimente cómodamente directamente al Asesor Experto o directamente al indicador. Al mismo tiempo, una sola clase debe ser capaz de trabajar con diferentes tipos de datos, por ejemplo, con barras, precios de cierre o flujo de ticks.

2. En resumen: es útil para los principiantes. Pero el uso de la programación orientada a objetos todavía les asustará.

1. No. Es sólo una pequeña modificación del indicador. Es que el artículo ya es bastante grande. Tuve la idea de escribir otro artículo, sólo para hacer tal adición y considerar una clase para resolver fórmulas (se obtendría un zigzag con la función de reconocer patrones, cuya fórmula se escribiría en la ventana de propiedades). Pero a Rashid no le interesaba el tema. Y es imposible meterlo todo en un artículo. Si alguien se ha dado cuenta, yo tenía una variante más del zigzag (basada en pullbacks desde el último máximo/mínimo), pero no había nada al respecto en el artículo.

Además, el artículo todavía trata del método de acceso directo a los valores de los vértices. La programación orientada a objetos en general está muy indirectamente relacionada con este tema, es cuestión de gustos en qué envolverlo, y se resuelve sin programación orientada a objetos, simplemente como aparecen los vértices, se ponen en un buffer adicional en orden, y al principio del buffer se escribe su número. En este caso, el acceso a cualquier vértice se realiza en dos pasos - obtener el número de vértices, obtener un vértice dado desde el final. Hay un poco de dificultad con el zigzag como en el cierre (debido a la cancelación de un nuevo rayo), pero es solucionable. Pero, ¿qué tiene que ver la programación orientada a objetos?

2. En caso de que OOP asuste a alguien, el artículo se compone de dos partes, antes de OOP (creación de dos indicadores) - es suficiente para entender cómo escribir un zigzag.