Discusión sobre el artículo "El poder del ZigZag (Parte II): Ejemplos de obtención, procesamiento y representación de datos." - página 3

 
lovaK:

...

Actualizado:2019.03.12 13:28

Pruebe ya la nueva versión de la biblioteca: EasyAndFastGUI - biblioteca para crear interfaces gráficas

 
Anatoli Kazharski:

Actualizado:2019.03.12 13:28

Pruebe ahora la nueva versión de la biblioteca: EasyAndFastGUI - biblioteca para crear interfaces gráficas.

Por favor, añade todos los archivos en un solo archivo. El archivo regular de Codobase no se actualiza cuando se publican nuevas versiones.

 
Andrey Khatimlianskii:

Por favor, añada todos los archivos en un solo archivo. El archivo estándar de Kodobase no se actualiza cuando se publican nuevas versiones.

 

ANatoli, ¡Buen trabajo!

Una pregunta ...

El MultiPercentageSegmentZZ parece que tiene un error en los archivos adjuntos. GetZigZagData función de zz_current0, zz_current1, zz_current2 no tiene h_buff,l_buff






¿Debería ser así?

//+------------------------------------------------------------------+
//| Rellenar los buffers indicadores|
//+------------------------------------------------------------------+
void FillIndicatorBuffers(const int i,const int total,const datetime &time[])
  {
   int index=total-i-1;
   int copy_total=1000;
   int h_buff=2,l_buff=3;
   datetime start_time_in =NULL;
   datetime stop_time_in  =NULL;
//--- Obtener datos de origen de un marco temporal superior
   datetime stop_time=time[i]-(PeriodSeconds(HigherTimeframe)*copy_total);
   CopyBuffer(zz_handle_htf,2,time[i],stop_time,h_zz_buffer_temp);
   CopyBuffer(zz_handle_htf,3,time[i],stop_time,l_zz_buffer_temp);
   CopyTime(_Symbol,HigherTimeframe,time[i],stop_time,t_zz_buffer_temp);
//--- Obtener los datos finales de un plazo superior
   zz_higher_tf.GetZigZagData(h_zz_buffer_temp,l_zz_buffer_temp,t_zz_buffer_temp);
   double htf_value=zz_higher_tf.PercentSumSegmentsDifference();
//--- Datos del primer segmento
   zz_higher_tf.SegmentTimes(zz_handle_current,h_buff,l_buff,_Symbol,HigherTimeframe,_Period,0,start_time_in,stop_time_in);
   zz_current0.GetZigZagData(zz_handle_current,h_buff,l_buff,_Symbol,_Period,start_time_in,stop_time_in);
//--- Datos del segundo segmento
   zz_higher_tf.SegmentTimes(zz_handle_current,h_buff,l_buff,_Symbol,HigherTimeframe,_Period,1,start_time_in,stop_time_in);
   zz_current1.GetZigZagData(zz_handle_current,h_buff,l_buff,_Symbol,_Period,start_time_in,stop_time_in);
//--- Datos del tercer segmento
   zz_higher_tf.SegmentTimes(zz_handle_current,h_buff,l_buff,_Symbol,HigherTimeframe,_Period,2,start_time_in,stop_time_in);
   zz_current2.GetZigZagData(zz_handle_current,h_buff,l_buff,_Symbol,_Period,start_time_in,stop_time_in);
//--- En la última barra
   if(i<total-1)
     {
      buffer_zz_higher_tf[i] =htf_value;
      buffer_segment_0[i]    =zz_current0.PercentSumSegmentsDifference();
      buffer_segment_1[i]    =zz_current1.PercentSumSegmentsDifference();
      buffer_segment_2[i]    =zz_current2.PercentSumSegmentsDifference();
     }
//--- En la historia
   else
     {
      //--- En caso de que haya una nueva barra del marco temporal superior
      if(new_bar_time!=t_zz_buffer_temp[0])
        {
         new_bar_time=t_zz_buffer_temp[0];
         //---
         if(i>2)
           {
            int f=1,s=2;
            buffer_zz_higher_tf[i-f] =buffer_zz_higher_tf[i-s];
            buffer_segment_0[i-f]    =buffer_segment_0[i-s];
            buffer_segment_1[i-f]    =buffer_segment_1[i-s];
            buffer_segment_2[i-f]    =buffer_segment_2[i-s];
           }
        }
      else
        {
         buffer_zz_higher_tf[i] =htf_value;
         buffer_segment_0[i]    =zz_current0.PercentSumSegmentsDifference();
         buffer_segment_1[i]    =zz_current1.PercentSumSegmentsDifference();
         buffer_segment_2[i]    =zz_current2.PercentSumSegmentsDifference();
        }
     }
  }
//+------------------------------------------------------------------+
 
¿Alguien ha compilado sin errores?
Archivos adjuntos:
 
Lamentablemente, no hay ningún archivo con la aplicación de la Parte 2 en pleno funcionamiento. No hay nada que probar.
 
Eugeni Neumoin #:

Hace más de 10 años también me "fascinaban" los zigzags y creé un gran número de ellos.

En el archivo adjunto hay ejemplos - multi-zigzag para 9 marcos de tiempo y Zigzag Builder, etc. un pequeño número de desarrollos basados en zigzags.

Pero el sentido práctico es importante. Mucho más seria es la tarea de identificar esos ektremos, a partir de los cuales se puede "retroceder" al analizar.

A modo de ejemplo:

Hemos elegido tres extremos con la ayuda de un zigzag. Hemos atado la Horquilla Andrews a ellos. Y vemos que el mercado alcanzó exactamente la línea de puntos hace unos días y exactamente se separó de ella.

Y hay muchas imágenes de este tipo. No cualquier extremo encontrado por un zigzag puede ser utilizado para este propósito.

En la imagen del menú con los números 0-10 y 12-14 hay 14 algoritmos de zigzag. Y en el número 11 hay otros 7 algoritmos de zigzag para encontrar patrones. En total hay 21 algoritmos.

En el adjunto puedes crear un montón de algoritmos usando el Constructor. Puedes utilizarlos en tus propios desarrollos.

Y más imágenes

Bajando


Vayamos aún más abajo y veamos cómo se formó el extremo situado en el número 1 del gráfico anterior.

Esto no se consigue triturando los rayos y extremos del zigzag. Y no calculando algunos patrones estadísticos no del todo claros del zigzag.

Es más importante encontrar un algoritmo que detecte extremos significativos.

¿Puedo utilizar todos estos MZZ9 para MT5?