Testando 'CopyTicks'. - página 23

 
Renat Fatkhullin:

É ideal fazer o download do que você precisa no fundo para você mesmo uma vez, e depois só baixar novos do cache próximo em microssegundos.

Se você faz consultas profundas toda vez que falha em disco, então é claro que a culpa é sua.

Você pode me mostrar o código para a melhor recuperação da história do tick para a primeira semana de setembro?
 
fxsaber:
Você pode me mostrar o código da melhor maneira de obter a história do tick para a primeira semana de setembro?

Escreva-o você mesmo, não é uma tarefa difícil.

Consultar as datas exatas e salvá-las em uma matriz local. Não há otimalidade quando se trabalha fora do cache. A otimização só faz sentido quando você faz o download dos últimos 4096 ticks do cache.

 
Renat Fatkhullin:

Escreva-o você mesmo, não é uma tarefa difícil.

Faça uma consulta sobre as datas exatas e armazene em uma matriz local.

Desta forma, não se pode saber com antecedência quantos carrapatos havia no intervalo necessário. Não há como determinar o parâmetro de contagem. Aqui está o problema.

Para bombear TODO o histórico desde o início de setembro, a contagem de ajuste = trilhão - você pode, é claro. Em seguida, use a busca binária para encontrar a data final na matriz e truncá-la.

Mas este trilliard não é de modo algum uma abordagem técnica. Ou precisamos sobrecarregar a função de, para, com a função de. Ou indexar o acesso ao banco de dados.

 
Renat Fatkhullin:

A otimização só faz sentido quando se faz o download dos últimos 4096 ticks do cache.

De referência:

Velocidade de saída: o terminal armazena para cada símbolo 4096 últimos ticks em cache para acesso rápido (para símbolos com pilha em execução - 65536 ticks)

E cerca de 65536 ticks (com pilha) - isso não seria já o ideal?
 

Prepararemos melhorias para o CopyTicks na próxima construção:

  • Talvez façamos caches rápidos adaptáveis com expansão automática para 128k ticks, o que permitirá escrever programas mais fáceis (não há necessidade de se preocupar com o download, e muitas vezes você pode obter o volume necessário diretamente do cache rápido)
  • adicionaremos uma versão adicional da função, assim será possível fazer citações com datas exatas de & para
 
Renat Fatkhullin:

Prepararemos melhorias para o CopyTicks na próxima construção:

  • possivelmente fazer caches rápidos adaptáveis com expansão automática para 128k ticks, o que permitirá escrever programas mais fáceis (não há necessidade de se preocupar em retomar o download e, muitas vezes, tomar o volume necessário diretamente do cache rápido)
  • Acrescentaremos uma versão adicional da função, para que possamos fazer citações com datas exatas de & para

Obrigado!

Sobre a história totalmente carregada de & para, provavelmente, dirá zero GetLastError.

Note que agora (e com a introdução das melhorias que você esboçou) é extremamente difícil conseguir um tique que era antes do tempo. Portanto, proponho fazer contagem e negativa - um pedido de carrapatos não só para o futuro (à direita), mas também para o passado (como em de == 0).

Então, será sempre conveniente e ótimo (sua implementação) consultar o histórico anterior.

 
fxsaber:

Obrigado!

Um histórico totalmente descarregado de & para seria provavelmente indicado por um GetLastError zero.

Note que agora (e com a introdução das melhorias que você indicou) é extremamente difícil conseguir um tique que era antes do tempo. Portanto, proponho fazer contagem e negativa - um pedido de carrapatos não só para o futuro (à direita), mas também para o passado (como em de == 0).

Então, será sempre conveniente e ótimo (sua implementação) consultar o histórico anterior.

É melhor fazer o CopyTicks() sobrecarregar de uma só vez o mesmo que para outras funções Copy...().
 
Alexey Kozitsyn:
É melhor fazer o CopyTicks() sobrecarregar o mesmo que para outras funções Copy...().
Então, teremos que abandonar a contagem padrão e de.
 
fxsaber:
Então temos que abandonar a contagem padrão e de.

Por quê? Usando o CopyBuffer como exemplo, agora temos isto:

intCopyBuffer(
intindicator_handle,// manípulo indicador
intbuffer_num,// número do buffer do indicador
data/hora de início_desenvolvimento,//date
intcount,// Quantoscopiar
duplobuffer[]// matriz, onde os dados serão copiados

);

Há uma contagem e de (start_time).

Você sugere que se acrescente isto:

intCopyBuffer(
intindicator_handle,// manípulo indicador
intbuffer_num,// número de buffer indicador
datetimestart_time,// a partir de que data
data/horastop_time,// até que data
bufferduplo[]// matriz, onde os dados serão copiados

);

Então podemos copiar em ambas as direções, certo? Somente, ao invés de data - ulong (em microssegundos).

Acrescentarei esta sobrecarga para alguns outros fins no futuro:

intCopyBuffer(
intindicator_handle,// manípulo indicador
intbuffer_num,// número do tampão indicador
intstart_pos,// onde começamos
intcount,// quantos copiamos
buffer duplo[]// matriz que copiará dados
);

Isso é tudo.

 
fxsaber:
Então, teremos que abandonar a contagem padrão e de.

Não o li com atenção no início... Sim, eu tenho que fazê-lo. E daí? Se os desenvolvedores expandirem o cache - ele será mais lento apenas quando carregar um histórico de carrapato grande o suficiente, e muitas vezes não é necessário fazê-lo. E, em tempo real, o carregamento não será afetado de forma alguma (será retirado do cache).

Penso que é muito mais importante carregar de data em data do que tentar salvar os parâmetros padrão.