nuevo mql4 que proporciona milisegundos en los timestamps.... - página 4

 
autoabacus:

...
Muy interesante. Gracias.
 

Me he dado cuenta de que mt4 tiene ahora un GetMicroSecondCount(). ¿Sería esto superior al uso de la función GetTickCount en términos de precisión?

¿Cuál sería la ventaja/desventaja de usar vs GetMicrosecondCount() vs GetTickCount()? ¿Usa más recursos? Pensaría que la resolución MicroSec sería una función superior a MilliSec. Siempre se puede convertir MicroSec a Millisec o a una resolución menor, pero no se puede tomar Millisec y obtener MicroSecs o una resolución mayor.


¿Por qué MQ ha sugerido la función GTC frente a GMicroC para las marcas de tiempo en milisegundos? Entiendo que quizás antes no existía la función GMicroC, pero ahora que la hay, ¿por qué no actualizar la documentación para recomendar GMicroC para una mayor resolución de las marcas de tiempo?

 
4evermaat:

Me he dado cuenta de que mt4 tiene ahora una función GetMicroSecondCount(). ¿Sería esto superior al uso de la función GetTickCount en términos de precisión?

¿Cuál sería la ventaja/desventaja de usar vs GetMicrosecondCount() vs GetTickCount()? ¿Usa más recursos? Pensaría que la resolución MicroSec sería una función superior a MilliSec. Siempre se puede convertir MicroSec a Millisec o a una resolución menor, pero no se puede tomar Millisec y obtener MicroSecs o una resolución mayor.


¿Por qué MQ ha sugerido la función GTC frente a GMicroC para las marcas de tiempo en milisegundos? Entiendo que quizás antes no existía la función GMicroC, pero ahora que la hay, ¿por qué no se actualiza la documentación para recomendar GMicroC para una mayor resolución de las marcas de tiempo?

Parece que te gusta quejarte Pediste milisegundos y ahora tienes microsegundos. De todos modos será mejor si TimeCurrent() (y otros tiempos devueltos por el servidor) devuelven milisegundos.

Si quieres hablar con Metaquotes, deberías escribir al ServiceDesk, rara vez responden a este foro.

 
4evermaat:

Me he dado cuenta de que mt4 tiene ahora una función GetMicroSecondCount(). ¿Sería esto superior al uso de la función GetTickCount en términos de precisión?

¿Cuál sería la ventaja/desventaja de usar vs GetMicrosecondCount() vs GetTickCount()? ¿Usa más recursos? Pensaría que la resolución MicroSec sería una función superior a MilliSec. Siempre se puede convertir MicroSec a Millisec o a una resolución menor, pero no se puede tomar Millisec y obtener MicroSecs o una resolución mayor.


¿Por qué MQ ha sugerido la función GTC frente a GMicroC para las marcas de tiempo en milisegundos? Entiendo que quizás antes no existía la función GMicroC, pero ahora que la hay, ¿por qué no actualizar la documentación para recomendar GMicroC para una mayor resolución de las marcas de tiempo?

Mientras que GetTickCount es una función de la API de Windows (desde el principio de Windows), la otra función requiere una implementación (aunque sencilla). No están relacionadas entre sí.
 
zirkoner:

Parece que te gusta quejarte Pediste milisegundos y ahora tienes microsegundos. De todos modos será mejor si TimeCurrent() (y otros tiempos devueltos por el servidor) devuelven milisegundos.

Si quieres hablar con Metaquotes, deberías escribir al ServiceDesk, rara vez responden a este foro.

No me quejo, sólo me pregunto por qué ahora que hay una nueva función más precisa, ellos (o cualquiera) siguen recomendando la función antigua. He escrito al ServiceDesk.

Ovo:
Mientras que GetTickCount es una función de la API de Windows (desde el principio de Windows), la otra función requiere una implementación (aunque sencilla). No están relacionadas entre sí.

¿Qué implementación utiliza GetMicroSecondCount() para obtener una precisión de microsegundos en las marcas de tiempo?

 
4evermaat:

¿Qué implementación utiliza GetMicroSecondCount() para obtener precisión de microsegundos en las marcas de tiempo?

Tengo una idea clara de cómo codificarlo, pero no soy el codificador de MQ. De todas formas, ¿para qué necesitas saberlo si ya te lo han hecho funcionar?
 

Para obtener la hora del sistema en milisegundos desde la época:


#include <WinAPI\windef.mqh>
#import
"kernel32.dll" void GetSystemTimeAsFileTime(FILETIME& t); #import ulong getCurrentEpochMsc(){      FILETIME t;      GetSystemTimeAsFileTime(t);      ulong time = (long)t.dwHighDateTime << 32 | t.dwLowDateTime;      ulong diffTo1970 = 11644473600000;      return (ulong)(time * 0.0001 - diffTo1970 - TimeGMTOffset()*1000); }
 
owneroxxor: Para obtener la hora del sistema como milisegundos desde la época:

Un Datetime es segundos desde la época. Se convierte en un long y se multiplica por 1000. No es necesario.

 
William Roeder:

Un Datetime son segundos desde la época. Cast a un long y multiplica por 1000. No hace falta todo eso.

No estás considerando que en algunos casos (como el mío) necesitaba saber el instante actual (precisión de milisegundos) del sistema para comparar con una orden colocada TimeMsc(). En ese caso, lo que dices no es válido.

 
owneroxxor:

No estás considerando que en algunos casos (como el mío) necesitaba saber el instante actual (precisión de milisegundos) del sistema para comparar con una orden colocada TimeMsc(). En ese caso, lo que dices no es válido.

Basta con utilizar GetTickCount().