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!!

- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
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;
}