Características da linguagem mql5, subtilezas e técnicas - página 90

 
Alexey Navoykov:

Aqui está uma variante que utiliza um timer winapi de alta resolução, dando uma precisão de 5,6e-13 segundos.

Do que é que estás a falar? Acontece que a frequência é 1786 GHz. E esta é a frequência da radiação infravermelha. :))
Acabaste de misturar a frequência com o balcão.
Na verdade são 3,8e-07 segundos. Isso é cerca de um terço de um microssegundo. Não é significativamente diferente do MQL


 
Nikolai Semko:

Do que é que estás a falar? Acontece que a frequência é 1786 GHz. E essa é a frequência da radiação infravermelha. :))
Acabaste de misturar a frequência com o balcão.
Na verdade são 3,8e-07 segundos. Isso é cerca de um terço de um microssegundo. Não é muito diferente da MQL.

Sim, é verdade, enganei-me.

 
Alexey Navoykov:

Sim, é isso mesmo, misturado)

Mas esta é uma solução real.
Verificado - o contador deles não reage à mudança da hora local.
Portanto, se eu precisar de microssegundos e usá-los por um longo período de tempo - por favor useo Kernel32.dll
Obrigado!

Afinal, é um bug, o que para o MQ é fácil de corrigir.
 

Precisamos de enviar pedidos colectivos para o balcão de atendimento. Porque de outra forma é inútil. Eles até pararam de responder a bugs de compilação. Há muitos pedidos, mas todos em vão...

Da mesma forma, tenho-lhes pedido que criem o TimeLocal e o TimeCurrent em milissegundos (especialmente o segundo, porque é problemático implementá-lo por mim mesmo).

 
Konstantin:

há um uso, você pode usá-lo para descarregar a GUI, por exemplo, aqui:

Objeto da classe Canvas para todo o gráfico, desenhando dados em tabelas, dados de cluster, níveis, etc., se o OnTimer for ligado ao máximo e o GUI for colocado lá (e eu sempre faço exatamente isso), então sem intervalo de tempo um gráfico carrega meu VPS em cerca de 45-60%, se eu fizer um atraso de 250, então tudo é normalizado ao mínimo, os gráficos respondem aos botões claramente, o sistema não é carregado

Qual é a ligação entre GetMicrosecondCount() e OnTimer() discutida aqui?
 
Alexey Navoykov:

Aqui está uma variante que utiliza um timer winapi de alta resolução, dando uma precisão de3,8e-07 segundos.

É assim que contamos os microssegundos.
 
Renat Fatkhullin:
É assim que contamos os microssegundos

Renat, você pode corrigir a ligação à hora local GetMicrosecondCount()?
Porque as consequências podem ser as mais imprevisíveis para aqueles que não conhecem esta característica.




int OnInit()
  {
   EventSetMillisecondTimer(1000);
   return(INIT_SUCCEEDED);
  }
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   return(rates_total);
  }
void OnTimer()
  {
    Comment("Программа уже работает: "+(string)(round(double(GetMicrosecondCount())/1000000.0))+" сек");
  }
 
Não, é um temporizador relativo para medir com precisão os intervalos de tempo, não o tempo astronómico.
 
Renat Fatkhullin:
Não, é um temporizador relativo para intervalos de tempo precisos, não para um tempo astronómico.

Obrigado, eu vou saber.
Fui enganado pela referência.

 
Renat Fatkhullin:
É assim que calculamos os microssegundos

Porque não calculamos GetTickCount da mesma forma? Então o problema da resolução de 15 ms desaparecerá e causará alguns problemas.

Razão: