MT5 e velocidade em ação - página 85

 
Anton:

@Anton, em muitas funções padrão você pode especificar NULL em vez de um caractere. Isso afeta a velocidade de execução?

SymbolInfoTick(NULL, Tick);

SymbolInfoTick(_Symbol, Tick);

Ou isso não faz diferença para o Terminal/Tester?

 
fxsaber:

@Anton, em muitas funções padrão você pode especificar NULL em vez de um caractere. Isso afeta a velocidade de execução?

Ou não há diferença para o Terminal/Tester?

Não posso dizer com certeza, mas intuitivamente nunca escrevo NULL em lugar algum.

Teoricamente, isso não deveria fazer diferença. Penso que ao compilar o NULL muda para um valor normal, e não gosto de ver coisas incompreensíveis com meus olhos.

 
Alexey Viktorov:

Não posso dizer com certeza, mas intuitivamente nunca escrevo NULL em lugar algum.

Teoricamente, não deveria ter nenhum efeito. Eu acho que a NULL muda para um valor normal ao compilar, e não gosto de ver coisas que não fazem sentido aos meus olhos.

O mesmo é verdade. Mas é a velocidade que me preocupa.

 

Não entendo como a SymbolInfoTicks pode diminuir a velocidade em um timer de segundos no fim de semana!

2021.02.28 21:33:02.993 ::SymbolInfoTick(_Symbol,Tick) = 171 mcs.

20 gráficos de símbolos diferentes, em cada um deles uma EA está rodando, o que leva apenas uma marca de seu símbolo no segundo timer.

O que há para diminuir a velocidade em um dia de folga?!


SZY 3374 MB na captura de tela - isso foi há uma hora solicitando carrapatos para a semana. Economizando recursos como este.

 
fxsaber:

Não entendo como a SymbolInfoTicks pode diminuir a velocidade em um timer de segundos no fim de semana!

20 gráficos de símbolos diferentes, em cada um deles uma EA está rodando, o que leva apenas uma marca de seu símbolo no segundo timer.

O que há para desacelerar em um dia de fim de semana!

Você tem:

  1. falta de informação
  2. algumas dúzias de fios Expert Advisor rodando em paralelo em 4 núcleos (8 com hyperthreading podem ser ignorados)
  3. novamente um único outlier de uma longa espera é encontrado?
  4. novamente uma única latência de sistema aleatória à vontade do gerente de linha?


 
Renat Fatkhullin:

Você tem:

  1. falta de informação
  2. uma dúzia de roscas de especialistas correndo em paralelo em 4 núcleos (8 com hiperlucros podem ser desconsiderados)
  3. novamente um único outlier de um longo período de espera é encontrado?
  4. Novamente uma única latência de sistema aleatória à vontade do gerente de linha?

Por que o SymbolInfoTick é uma função tão seleta para a latência?

 
fxsaber:

Por que o SymbolInfoTick é uma função tão escolhida para a frenagem?

Não é.

Você sempre pegará atrasos aleatórios em qualquer lugar em qualquer programa. Comece a acompanhar tudo e você ficará horrorizado com as realidades do Windows. Já expliquei isto em detalhes várias vezes.

Em algum momento nós também ficamos surpresos quando pegamos rajadas aleatórias de 60-80 ms em vez de 0 ms nas funções do sistema WinAPI.


Estamos agora migrando a maioria de nossas soluções Windows em massa para versões Windows Server 2019 Core especialmente desengorduradas, e projetos web .NET Core para Linux. Isto traz uma economia tremenda nos recursos do sistema e reduz seriamente a latência do sistema.

O primeiro passo para escumar os terminais MataTrader 5 foi começar a implementar um gerenciador de tarefas para acompanhar o consumo de recursos em tempo real. Para nós mesmos, estamos coletando mais informações.

Já foi revelado que nós:

  • retenção excessivamente longa de fluxos desnecessários
  • sobre-escalonamento
  • Cachimbos de extensão em excesso.
Até o próximo lançamento, vamos corrigir algumas das questões de recursos passo a passo.
 
Alexey Viktorov:

Teoricamente, não deveria ter nenhum efeito. Eu acho que o NULL muda para um valor normal ao compilar, e não gosto de ver coisas incompreensíveis com meus olhos.

Teoricamente deveria ter um efeito, mas não terá, porque o

SymbolInfoTick(_Symbol, Tick);

_Símbolo é passado não por valor (como se segue na descrição em Ajuda), mas por referência

 
Renat Fatkhullin:

Não é.

Você sempre pegará atrasos aleatórios em qualquer lugar em qualquer programa. Comece a acompanhar tudo e você ficará horrorizado com as realidades do Windows. Já expliquei isto em detalhes várias vezes antes.

Obrigado, vou dar uma olhada.


Por favor, considere essa característica.

int SymbolInfoTicks( const string Symb, MqlTick &Ticks[] ); // Возвращает свежие тики (не более сотни), пришедшие с предыдущего вызова этой функции.


O problema de receber carrapatos tardios sem saltos agora só é resolvido através de CopyTicks*. É um mecanismo muito pesado para esta tarefa generalizada. É como atirar em pássaros com um canhão.

Daí os freios, retenção de enormes caches, etc.

 
A100:

Teoricamente deveria ter um efeito, mas não tem, porque em

_Símbolo não é passado por valor (como a descrição na Ajuda sugere), mas por referência

Dentro da função, ainda precisamos passar para o caráter de carrapato apropriado. Este é o tempo necessário para analisar a variável-corda. Isto não é necessário com o NULL.