Discussão do artigo "O poder do ZigZag (parte II). Exemplos de recebimento, processamento e exibição de dados" - página 3

 
lovaK:

...

Atualizado:2019.03.12 13:28

Experimente a nova versão da biblioteca agora: EasyAndFastGUI - biblioteca para criação de interfaces gráficas

 
Anatoli Kazharski:

Atualizado:2019.03.12 13:28

Experimente a nova versão da biblioteca agora: EasyAndFastGUI - biblioteca para criação de interfaces gráficas

Adicione todos os arquivos em um único arquivo. O arquivo regular do Codobase não é atualizado quando novas versões são publicadas.

 
Andrey Khatimlianskii:

Adicione todos os arquivos em um único arquivo. O arquivo padrão do Kodobase não é atualizado quando novas versões são publicadas.

 

ANatoli, bom trabalho!

Uma pergunta...

O MultiPercentageSegmentZZ parece ter um erro nos arquivos anexados. A função GetZigZagData de zz_current0, zz_current1, zz_current2 não tem h_buff, l_buff






Deveria ser assim?

//+------------------------------------------------------------------+
//| Preencher os buffers de 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;
//--- Obter dados de origem de um período de tempo 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);
//--- Obter dados finais de um período de tempo superior
   zz_higher_tf.GetZigZagData(h_zz_buffer_temp,l_zz_buffer_temp,t_zz_buffer_temp);
   double htf_value=zz_higher_tf.PercentSumSegmentsDifference();
//--- Dados do primeiro 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);
//--- Dados do 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);
//--- Dados do terceiro 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);
//--- Na ú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();
     }
//--- Sobre a história
   else
     {
      //--- No caso de haver uma nova barra do período de tempo 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();
        }
     }
  }
//+------------------------------------------------------------------+
 
Alguém compilou sem erros?
Arquivos anexados:
 
Infelizmente, não há nenhum arquivo com o aplicativo da Parte 2 totalmente funcional. Não há nada para testar.
 
Eugeni Neumoin #:

Há mais de 10 anos, eu também era "fascinado" por ziguezagues e criei um grande número deles.

No Anexo, há exemplos - multi-ziguezague para 9 períodos de tempo e Zigzag Builder, etc. um pequeno número de desenvolvimentos baseados em ziguezagues.

Mas o sentido prático é importante. Muito mais séria é a tarefa de identificar esses ektremums, a partir dos quais você pode "recuar" ao analisar.

Como exemplo:

Escolhemos três extremos com a ajuda de um ziguezague. Amarramos o Andrews Fork a eles. E vemos que o mercado atingiu exatamente a linha pontilhada há alguns dias e se afastou exatamente dela.

E há muitas dessas imagens. Não é qualquer extremo encontrado por um ziguezague que pode ser usado para esse fim.

Na imagem do menu com os números 0-10 e 12-14, há 14 algoritmos de ziguezague. E no número 11 há mais 7 algoritmos de ziguezague para encontrar padrões. No total, são 21 algoritmos.

No anexo, você pode criar vários algoritmos com a ajuda do Constructor. Você pode usá-los em seus próprios desenvolvimentos.

E mais imagens

Descendo


Vamos descer ainda mais e ver como o extremo número 1 do gráfico acima foi formado.

Isso não é obtido com a análise dos raios e extremos do ziguezague. E não calculando alguns padrões estatísticos não muito claros do ziguezague.

É mais importante encontrar um algoritmo que detecte extremos significativos.

Posso usar todos esses MZZ9 para o MT5?