Discusión sobre el artículo "El poder del ZigZag (Parte I). Desarrollando la clase base del indicador"
Los trabajos anteriores del autor sobre visualización son conocidos e interesantes.
La idea de tener en cuenta el spread al construir indicadores es absolutamente correcta, ya que es un parámetro importante del precio, que por alguna razón no se tiene en cuenta en los indicadores clásicos.
En cuanto al indicador ZigZag, incluso en su versión, se ve claramente en las imágenes (visualización) que la tendencia (si he entendido bien - la línea verde) a veces tiene un retraso crítico.
La razón es que si utilizamos la tendencia como un criterio de negociación (de lo contrario ¿por qué utilizar el indicador ZigZag), debemos tener en cuenta no sólo la propagación, sino también los factores de la dinámica, y en primer lugar - la amplitud de las emisiones hacia atrás (a tener en cuenta cuando la construcción de una tendencia). Sin embargo, esto es un error del análisis tradicional en la determinación de tendencias en general.
Es interesante ver los resultados de la prueba de su Asesor Experto (probablemente los veremos en las secuelas del artículo).
El artículo es útil, y la visualización es clara como siempre. Gracias al autor por su trabajo.
ZigZag permite encontrar abstracciones de cualquier nivel de complejidad.
El próximo artículo mostrará ejemplos de cómo se puede utilizar.
low_ask_buffer[i] =low[i]+(spread[i]*_Point);
Ejecutarlo en garrapatas reales para la comparación.
fxsaber:
Боюсь, это неверно
low_ask_buffer[i] =low[i]+(spread[i]*_Point);
Ejecutarlo en garrapatas reales para la comparación.
Estoy de acuerdo. No es un hecho que el spread mínimo fue exactamente cuando el precio de oferta alcanzó su nivel mínimo.
Y los datos históricos (en barras) contienen exactamente el spread mínimo.
Así que necesitamos obtener ticks reales - CopyTicks(), y determinar la diferencia mínima (ask-bid) en el mínimo bid minimum ask (Low Ask).
¿Es esto lo que querías decir?
De acuerdo. No es un hecho que el diferencial mínimo fuera exactamente cuando el precio de oferta alcanzó su nivel mínimo.
Y los datos históricos (en barras) contienen exactamente el spread mínimo.
Así que necesitamos obtener ticks reales - CopyTicks(), y determinar la diferencia mínima (ask-bid) en el mínimo bid minimum ask (Low Ask).
¿Es esto lo que querías decir?
Probablemente CopyTicks es un poco caro para tal cosa. Es más fácil sólo perseguir ticks reales y construir un ZigZag por ticks. Francamente hablando, no entiendo por qué decidió quedar atrapado en la ejecución del indicador de ZZ.... Usted no necesita la visualización al escribir un TS de todos modos.
Una vez publiqué exactamente el mismo ZZ directamente en un Asesor Experto. Funciona rápidamente, y probablemente no se necesita nada más.
Si desea tener un Low Ask real, añada este código al indicador.
Parámetro externo para activar el modo:
input bool RealTicksMode =false; // Modo ticks reales
Método para obtener el mínimo ask de los datos reales de tick:
//+------------------------------------------------------------------+ //| Devuelve el precio mínimo de venta a partir de los datos de tick || //+------------------------------------------------------------------+ double GetLowAsk(const int i,const datetime &time[]) { //--- Salir si el modo ticks reales está desactivado if(!RealTicksMode) return(0.0); //--- Excluir la última barra (actual) if(i>=g_rates_total) return(0.0); //--- MqlTick ticks[]; double low_ask =0.0; datetime end_time =time[i]+PeriodSeconds(); //--- Obtener ticks en el rango especificado int copied_total=CopyTicksRange(_Symbol,ticks,COPY_TICKS_ALL,(ulong)time[i]*1000,(ulong)end_time*1000); if(copied_total>0) { low_ask=ticks[0].ask; for(int k=1; k<copied_total; k++) { if(ticks[k].ask<low_ask) low_ask=ticks[k].ask; } } //--- return(low_ask); }
//---
Si no se obtiene el mínimo ask, se utiliza el mínimo spread.
//+------------------------------------------------------------------+ //| Rellena los buffers del indicador High Bid y Low Ask | //+------------------------------------------------------------------+ void FillAskBidBuffers(const int i,const datetime &time[],const double &high[],const double &low[],const int &spread[]) { //--- Salir si no se ha alcanzado la fecha de inicio if(time[i]<first_date) return; //--- Obtenga el pedido mínimo de los datos de tick double low_ask=GetLowAsk(i,time); //--- Guardar los valores high_bid_buffer[i] =high[i]; low_ask_buffer[i] =(low_ask>0)? low_ask : low[i]+(spread[i]*_Point); }
Resultado:
Sinceramente, no entiendo por qué decidió aferrarse al diseño del indicador de la ZZ.....
Para estudio e investigación.

- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado El poder del ZigZag (Parte I). Desarrollando la clase base del indicador:
Muchos investigadores no prestan la atención suficiente a la definición del comportamiento de los precios. En este caso, además, se usan métodos complejos que con frecuencia son simplemente «cajas negras», tales como: aprendizaje de máquinas o redes neuronales. En estos casos, lo más importante es: «¿Qué datos suministrar a la entrada para el entrenamiento de este u otro modelo?»
Normalmente, el indicador ZigZag se construye según los máximos y mínimos de las barras, sin tener en cuenta el spread. En este artículo, mostraremos una versión modificada en la que el spread se tendrá en cuenta en la construcción de segmentos para los extremos inferiores del ZigZag. Se presupone que en el sistema comercial, las transacciones se realizarán dentro del canal de precio. Esto es importante, ya que sucede con frecuencia (por ejemplo, de noche) que el precio de compra (ask) supera sustancialmente el precio de venta (bid), por ello, construir un indicador solo según los precios bid en este caso sería incorrecto. Y es que no tiene sentido construir los extremos inferiores del indicador según los mínimos de las barras si no existe la posibilidad de realizar la compra a estos precios. Claro que podemos tener en cuenta el spread en las condiciones comerciales, pero lo mejor es que todo se vea directamente en el gráfico. Esto simplificará el desarrollo de la estrategia comercial, ya que todo será más verosímil desde el principio.
Además, estaría bien ver todos los puntos en los que los extremos del ZigZaga se han actualizado. Entonces, la imagen general estaría más completa. Vamos a ver a continuación el código de este indicador. Nos detendremos solo en las características y funciones principales.
Autor: Anatoli Kazharski