CopyTicks

 

Faco a copia dos ultimos 2000 ticks, muitos ticks vem com os valores zerados e outros com valores malucos. Alguem poderia me explicar? Se quero os 2000 ultimos valores do ativo, o procediemnto abaixo esta' Correto?


            int     attempts=0;     // Contagem de tentativas 

            bool    success=false;  // A flag de uma cópia bem sucedida de ticks

            //--- Faça 3 tentativas de receber ticks 

            while(attempts<3) 

              { 

                 //--- Solicitando o histórico de ticks desde 1970.01.01 00:00.001 (parâmetro para=1 ms) 

                 int received=CopyTicks( _ativo,ticks_array,COPY_TICKS_ALL, 0, 2000 ); 

                 if(received!=-1) 

                 { 

                    //--- Mostrando informações sobre o número de ticks e tempo gasto 

                    PrintFormat("%s: received %d ticks in %d ms",_Symbol,received,GetTickCount() ); 

                    //--- Se o histórico de ticks é sincronizado, o código de erro é igual a zero 

                    if(GetLastError()==0) 

                      { 

                        success=true; 

                        break; 

                      } 

                    else 

                       PrintFormat("%s: Ticks ainda não estão sincronizados, %d ticks recebidos por %d ms. Error=%d", 

                                  _ativo,received, _num_ticks,_LastError); 

                 } 

                 //--- Contagem de tentativas 

                 attempts++; 

                 //--- Uma pausa de um segundo para aguardar o fim da sincronização da base de dados de ticks 

                 Sleep(1000); 

              } 

            //--- A recepção de ticks solicitados no início do histórico de ticks falhou em três tentativas 

            if(!success) 

              { 

               PrintFormat("Error! Falha em receber %d ticks do %s em três tentativas",_num_ticks,_ativo); 

               return; 

              } 

 
hulemos01:

Faco a copia dos ultimos 2000 ticks, muitos ticks vem com os valores zerados e outros com valores malucos. Alguem poderia me explicar? Se quero os 2000 ultimos valores do ativo, o procediemnto abaixo esta' Correto?


            int     attempts=0;     // Contagem de tentativas 

            bool    success=false;  // A flag de uma cópia bem sucedida de ticks

            //--- Faça 3 tentativas de receber ticks 

            while(attempts<3) 

              { 

                 //--- Solicitando o histórico de ticks desde 1970.01.01 00:00.001 (parâmetro para=1 ms) 

                 int received=CopyTicks( _ativo,ticks_array,COPY_TICKS_ALL, 0, 2000 ); 

                 if(received!=-1) 

                 { 

                    //--- Mostrando informações sobre o número de ticks e tempo gasto 

                    PrintFormat("%s: received %d ticks in %d ms",_Symbol,received,GetTickCount() ); 

                    //--- Se o histórico de ticks é sincronizado, o código de erro é igual a zero 

                    if(GetLastError()==0) 

                      { 

                        success=true; 

                        break; 

                      } 

                    else 

                       PrintFormat("%s: Ticks ainda não estão sincronizados, %d ticks recebidos por %d ms. Error=%d", 

                                  _ativo,received, _num_ticks,_LastError); 

                 } 

                 //--- Contagem de tentativas 

                 attempts++; 

                 //--- Uma pausa de um segundo para aguardar o fim da sincronização da base de dados de ticks 

                 Sleep(1000); 

              } 

            //--- A recepção de ticks solicitados no início do histórico de ticks falhou em três tentativas 

            if(!success) 

              { 

               PrintFormat("Error! Falha em receber %d ticks do %s em três tentativas",_num_ticks,_ativo); 

               return; 

              } 

eu utilizo o copytick assim também, porém sempre vi esses valores 0 e valores bem anormais também. Acredito que erros na captura destes dados devem ser comuns, o ideal é colocar filtros ao buscar informações deste array alimentado como:

tick.ask == 0

tick.bid == 0

tick.ask < t.bid

tick.volume == 0

para que não interfira no seu objetivo com esses dados, meu conselho é Ignore-os.

fora isso desconheço, mas ficarei atento caso alguém souber!!