есть ли какой - либо способ получить число микросекунд, прошедшее с 0: 00 1 января 1970 года по настоящее время?  Пожалуйста, помоги мне, спасибо! - страница 3

 
伊霍尔赫拉斯科

启动时间(虽然它最多是几秒)然后并等待几秒。此时 ,记住GetMicrosecondsCount()的值。 ,要找到自 1970年以来的任何给定时间 的微秒数 ,进入当前乘时间以 1,000,000 ,然后加上当前 GetMicrosecondsCount() 与存储 值之间的差值的余数 

это хорошее замечание, о котором я тоже думал раньше, и использование более высокой частоты, чтобы судить о времени узлов, код следующий: 

    ***

 ограниченность этого метода заключается в том, что, как только часы системы будут выверены, это повлияет на мое окончательное количество, так что этот метод все еще имеет недостатки, спасибо! 
 
马克西姆库兹涅佐夫

要获得最准确的时间,请使用DLL调用 

https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsystemtimepreciseasfiletime

和已经用于间歇测量的终端功能

GetMicrosecondCount 和 GetTickCount64

 Следующий шаг, я хочу хорошо учиться использовать VS2010 для производства файлов DLL, которые у меня пока нет возможностей, но я уверен, что вы предлагаете такой способ решить мои проблемы, большое спасибо! 

 
zhiqi xie:

это хорошее замечание, о котором я тоже думал раньше, и использование более высокой частоты, чтобы судить о времени узлов, код следующий: 

    ***

 ограниченность этого метода заключается в том, что, как только часы системы будут выверены, это повлияет на мое окончательное количество, так что этот метод все еще имеет недостатки, спасибо! 
Пожалуйста вставляйте код правильно: при редактировании сообщения нажмите кнопку    Code и во всплывающее окно вставьте свой код 
 
Aleksey Mavrin:

а плюс минус погрешность таймера разве не надо учесть? раз уж про точность речь.

Ну а как его учесть? Никак.

 
zhiqi xie:
 при подготовке программы EA с использованием MQL5 я обнаружил, что функция TimeLocal () для получения времени на локальном компьютере может быть точна только в секундах, хотя функция GetMicrosecondCount () позволяет мне получить число микросекунд, прошедшее после начала программы, но не с 0: 00 до 0: 00 1 января 1970 года.  есть ли какой - либо способ получить число микросекунд, прошедшее с 0: 00 1 января 1970 года по настоящее время?  Пожалуйста, помоги мне, спасибо! 

Code Base

Time in microseconds (µs) since 01/01/1970

Nikolai Semko, 2021.07.27 23:41

Simple class for getting the number of milliseconds(µs) elapsed since January 1, 1970

 
Ihor Herasko:

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

это хорошее замечание, о котором я тоже думал раньше, и использование более высокой частоты, чтобы судить о времени узлов, код следующий: 

         bdsj=TimeLocal();  
         bdsj_last=bdsj;  

         for(int i_ls=0; i_ls<2;) 
           {
            bdsj=TimeLocal(); 

            if(bdsj_last<bdsj)  
              {
               bdsjxzwms=bdsj*1000000-GetMicrosecondCount(); 
               
               Print("bdsjxzwms=",bdsjxzwms);
              
               i_ls++;
              }

            bdsj_last=bdsj;  
           }

 ограниченность этого метода заключается в том, что, как только часы системы будут выверены, это повлияет на мое окончательное количество, так что этот метод все еще имеет недостатки, спасибо! 

 
Nikolai Semko:

 Я очень благодарен Вам за то, что вы лично составили код, чтобы выполнить эту функцию, но аналогичный процесс, который я уже пробовал, был бы несовершенным, если бы при калибровке или корректировке часов системы пришлось бы заново открыть цикл для определения времени изменения таймера Local (). я думаю, что этот вопрос можно было бы решить только с помощью DLL,  без использования DLL Предлагаемое решение уже лучше, спасибо! 

 
Ihor Herasko:

Ну а как его учесть? Никак.

ну я представляю так: если для расчёта запаздывания события то плюс погрешность, если для ожидаемого начала события - то минус. 

Но в моих системах миллисекунды не влияют, не представляю куда это применить.

Если тик очень запоздал, то что? а если не запоздал но следующий на 30 пипсов улетел? Не понимаю как это помогает, разве что мониторить чтоб не тормозило твоё соединение с сервером.

 
Точное время  с ценой деления 100нс  можно получить через WinAPI, которое теперь является частью стандартной библиотеки. (см. \inqlude\WinAPI). Только его потом надо конвертировать из windows в UNIX время.
Причина обращения: