новый mql4 предоставление миллисекунд в метках времени.... - страница 4

 
autoabacus:

...
Очень интересно. Спасибо.
 

Я заметил, что в mt4 теперь есть GetMicroSecondCount(). Будет ли это лучше, чем использование функции GetTickCount с точки зрения точности?

В чем преимущество/недостаток использования GetMicrosecondCount() по сравнению с GetTickCount()? Использует ли она больше ресурсов? Я бы подумал, что разрешение в микросекундах будет лучше, чем в миллисекундах. Вы всегда можете преобразовать микросекунды в миллисекунды или более низкое разрешение, но вы не можете взять миллисекунды и получить микросекунды или более высокое разрешение.


Почему MQ предлагает функцию GTC против GMicroC для миллисекундных меток времени? Я понимаю, что раньше, возможно, не было функции GMicroC. Но теперь, когда она есть, почему бы не обновить документацию, чтобы рекомендовать GMicroC для более высокого разрешения меток времени?

 
4evermaat:

Я заметил, что в mt4 теперь есть GetMicroSecondCount(). Будет ли это лучше, чем использование функции GetTickCount с точки зрения точности?

В чем преимущество/недостаток использования GetMicrosecondCount() по сравнению с GetTickCount()? Использует ли она больше ресурсов? Я бы подумал, что разрешение в микросекундах будет лучше, чем в миллисекундах. Вы всегда можете преобразовать микросекунды в миллисекунды или более низкое разрешение, но вы не можете взять миллисекунды и получить микросекунды или более высокое разрешение.


Почему MQ предлагает функцию GTC против GMicroC для миллисекундных меток времени? Я понимаю, что раньше, возможно, не было функции GMicroC. Но теперь, когда она есть, почему бы не обновить документацию, чтобы рекомендовать GMicroC для более высокого разрешения меток времени?

Похоже, вам нравится жаловаться Вы просили миллисекунды, а теперь у вас микросекунды. В любом случае будет лучше, если TimeCurrent() (и другое время, возвращаемое с сервера) будет возвращать миллисекунды.

Если вы хотите поговорить с Metaquotes, вам лучше написать в ServiceDesk, они очень редко отвечают на этом форуме.

 
4evermaat:

Я заметил, что в mt4 теперь есть GetMicroSecondCount(). Будет ли это лучше, чем использование функции GetTickCount с точки зрения точности?

В чем преимущество/недостаток использования GetMicrosecondCount() по сравнению с GetTickCount()? Использует ли она больше ресурсов? Я бы подумал, что разрешение в микросекундах будет лучше, чем в миллисекундах. Вы всегда можете преобразовать микросекунды в миллисекунды или более низкое разрешение, но вы не можете взять миллисекунды и получить микросекунды или более высокое разрешение.


Почему MQ предлагает функцию GTC против GMicroC для миллисекундных меток времени? Я понимаю, что раньше, возможно, не было функции GMicroC. Но теперь, когда она есть, почему бы не обновить документацию, чтобы рекомендовать GMicroC для более высокого разрешения меток времени?

В то время как GetTickCount является основной функцией Windows API (с самого начала существования Windows), другая функция требует (хотя и простой) реализации. Они не связаны друг с другом.
 
zirkoner:

Похоже, вам нравится жаловаться Вы просили миллисекунды, а теперь у вас микросекунды. В любом случае будет лучше, если TimeCurrent() (и другое время, возвращаемое с сервера) будет возвращать миллисекунды.

Если вы хотите поговорить с Metaquotes, вам лучше написать в ServiceDesk, они очень редко отвечают на этом форуме.

Я не жалуюсь. Просто интересно, почему теперь, когда доступна новая функция, более точная, они (или кто-либо другой) все еще рекомендуют старую функцию. Я написал в службу поддержки.

Ово:
Если GetTickCount является основной функцией Windows API (с самого начала существования Windows), то другая функция требует (хотя и простой) реализации. Они не связаны друг с другом.

Какую реализацию использует GetMicroSecondCount() для получения микросекундной точности в метках времени?

 
4evermaat:

Какую реализацию использует GetMicroSecondCount() для получения микросекундной точности в метках времени?

У меня есть четкое представление, как это закодировать, но я не кодер MQ. В любом случае, зачем вам это знать, если они уже сделали так, чтобы это работало для вас?
 

Для получения системного времени в миллисекундах от эпохи:


#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: Для получения системного времени в миллисекундах от эпохи:

Datetime - это секунды от эпохи. Приведите к long и умножьте на 1000. Все это не нужно.

 
William Roeder:

Datetime - это секунды от эпохи. Приведите к long и умножьте на 1000. Все это не нужно.

Вы не учитываете, что в некоторых случаях (как у меня) мне нужно было знать текущее мгновение (с точностью до миллисекунды) системы, чтобы сравнить с размещенным заказом TimeMsc(). В этом случае то, что вы сказали, недействительно.

 
owneroxxor:

Вы не учитываете, что в некоторых случаях (как у меня) мне нужно было знать текущее мгновение (с точностью до миллисекунды) системы, чтобы сравнить с размещенным заказом TimeMsc(). В этом случае то, что вы сказали, недействительно.

Просто используйте GetTickCount().