Scripts: ThirdPartyTicks - página 6

 
fxsaber:
Criação de um análogo filtrado a partir de um símbolo personalizado para acelerar no Tester.

É realmente rápido no Tester. Os ticks ficaram 10 vezes menores. E a velocidade aumentou de acordo com isso

 

Agradecimentos a @fxsaber

Bela correção.

 
fxsaber:

Outra fonte de ticks.

A cTrade é boa, mas o que dizer da InteractiveBrokers? Eles têm alguns dos preços mais baratos para dados. Existe um conector desse tipo disponível?
 
Sergey Lebedev:
A cTrade é boa, mas e a InteractiveBrokers? Eles têm alguns dos preços mais baratos para dados. Havia um conector como esse disponível?

Não.

 

Boa tarde.

Eu estava reescrevendo scripts para testes em uma bolsa de valores comum (não forex). Além de reescrever algumas coisas para mim, me deparei com o fato de que, no arquivo ticks.mqh, a função StringToDouble, que é usada para traduzir o preço, não leva em conta o caso de o preço não ter nenhum ponto. Eu mesmo corrigi isso. Mas talvez seja interessante para você saber disso e corrigi-lo também.

 
traveller00:

Boa tarde.

Eu estava reescrevendo scripts para testes em uma bolsa de valores comum (não forex). Além de reescrever algumas coisas para mim, me deparei com o fato de que, no arquivo ticks.mqh, a função StringToDouble, que é usada para traduzir o preço, não leva em conta o caso de o preço não ter nenhum ponto. Eu mesmo corrigi isso. Mas talvez seja interessante para você saber disso e corrigi-lo também.

Fiquei surpreso por você ter entendido o código. Obrigado pelo relatório de erro, eu o corrigi.

  return(point ? Res / TenPow[Pos - point] : Res);
 

Sim, eu mesmo o corrigi quase da mesma forma.

Pode não ser útil para você, mas já que estamos falando sobre isso, vou escrever sobre algumas peculiaridades que mudei para mim. Isso se refere principalmente ao caso em que um processamento bastante lento de todos os caracteres foi iniciado, interrompido na metade e depois continuado.

1. ThirdPartyTicks[i].ToCustomSymbol(Sync, ...) é chamado na função CreateAllSymbols. Isso fará com que this.FilesOffline.Refresh() se contorça a cada símbolo, o que pode ser lento, especialmente se houver milhares de arquivos e o tamanho total for de dezenas de gigabytes. O ideal seria verificar se não há nada de novo on-line e não atualizar a cada símbolo.

2. Na função ToCustomSymbol da string, você não vê verificações de que o símbolo já existe. Para ser sincero, não verifiquei o que aconteceria, não entrei em detalhes. Mas, por mim mesmo, eu modifiquei a verificação para que, quando eu continuar, ela não analise todos os arquivos novamente em busca de símbolos antigos existentes.

P.S. Gostaria de agradecê-lo pelo artigo e pelas várias ferramentas postadas, muito úteis.

 
traveller00:

Tem certeza de que não obteve o script de um arquivo zip? Ele não é uma versão atualizada. Devido a esse problema, muitas vezes acontece de algum bug ser corrigido, mas passar despercebido.

 
fxsaber:

Tem certeza de que não obteve o script de um arquivo ZIP?

Eu tive esse bug há muito tempo :) Depois, percebi que havia algo errado e baixei todos os arquivos, um a um, manualmente. Eu ia escrever sobre o ZIP também, mas me esqueci. Portanto, ele deveria ter funcionado com a versão mais recente.

 
traveller00:

1. Na função CreateAllSymbols, ThirdPartyTicks[i].ToCustomSymbol(Sync, ...) é chamada. Isso fará com que this.FilesOffline.Refresh() se contorça a cada símbolo, o que pode ser lento, especialmente se houver milhares de arquivos e o tamanho total for de dezenas de gigabytes. O ideal seria verificar se não há nada de novo on-line e não atualizar a cada caractere.

Há muito tempo, notei atrasos relacionados a isso, então implementei especialmente uma solução alternativa para o problema. Desde então, não há mais atrasos.


Agora tenho um arquivo de 18 GB e zips > 35.000 peças. Tudo funciona rapidamente, sem atrasos.


Talvez você não tenha entendido completamente como isso funciona, por isso apresentou essa hipótese.