Características del lenguaje mql5, sutilezas y técnicas - página 90

 
Alexey Navoykov:

Aquí hay una variante que utiliza un temporizador winapi de alta resolución, dando una precisión de 5,6e-13 segundos.

¿De qué estás hablando? Resulta que la frecuencia es de 1786 GHz. Y esta es la frecuencia de la radiación infrarroja. :))
Acabas de confundir la frecuencia con el contador.
En realidad son 3,8e-07 segundos. Eso es aproximadamente un tercio de microsegundo. No es significativamente diferente del MQL


 
Nikolai Semko:

¿De qué estás hablando? Resulta que la frecuencia es de 1786 GHz. Y esa es la frecuencia de la radiación infrarroja. :))
Acabas de confundir la frecuencia con el contador.
En realidad son 3,8e-07 segundos. Eso es aproximadamente un tercio de microsegundo. No es muy diferente de MQL.

Sí, es cierto, me equivoqué.

 
Alexey Navoykov:

Sí, así es, mezclado)

Sin embargo, esta es una solución real.
Lo he comprobado: su contador no reacciona al cambio de hora local.
Así que si necesito microsegundos y utilizarlos durante un largo período de tiempo - por favor, utiliceKernel32.dll
Gracias.

Así que, después de todo, se trata de un error, que en el caso de MQ es fácil de solucionar.
 

Tenemos que enviar solicitudes colectivas al servicio de atención al cliente. Porque si no, no sirve para nada. Incluso han dejado de responder a los errores del compilador. Hay muchas peticiones, pero todas en vano.

Del mismo modo, les he pedido que creen TimeLocal y TimeCurrent de milisegundos (especialmente el segundo, porque es problemático implementarlo por mí mismo).

 
Konstantin:

hay un uso, se puede utilizar para descargar GUI, por ejemplo aquí:

Objeto de la clase Canvas para todo el gráfico, dibujar datos en tablas, datos de cluster, niveles, etc., si OnTimer se pone al máximo y la GUI se coloca ahí (y siempre hago exactamente eso), entonces sin retardo un gráfico carga mi VPS en un 45-60%, si hago un retardo de 250, entonces todo se normaliza al mínimo, los gráficos responden a los botones claramente, el sistema no se carga

¿Cuál es la relación entre GetMicrosecondCount() y OnTimer() de la que se habla aquí?
 
Alexey Navoykov:

Aquí hay una variante que utiliza un temporizador winapi de alta resolución, dando una precisión de3,8e-07 segundos.

Así es como contamos los microsegundos
 
Renat Fatkhullin:
Así contamos los microsegundos

Renat, ¿puedes arreglar la vinculación con la hora local GetMicrosecondCount()?
Porque las consecuencias pueden ser de lo más imprevisibles para quienes no conocen 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))+" сек");
  }
 
No, es un temporizador relativo para medir con precisión los intervalos de tiempo, no el tiempo astronómico.
 
Renat Fatkhullin:
No, es un temporizador relativo para intervalos de tiempo precisos, no para el tiempo astronómico.

Gracias, lo sabré yo.
La referencia me confundió.

 
Renat Fatkhullin:
Así es como calculamos los microsegundos

¿Por qué no calculamos GetTickCount de la misma manera? Entonces el problema de la resolución de 15 ms desaparecerá y causará algunos problemas.