Смотрю в лог-файлы терминала, вижу 12:41:32.818 в
"ER 0 12:41:32.818 Terminal update C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5 folder started"
и слюнки текут. Где в программе на MQL5 добыть такое же шикарное время? TimeLocal дает без миллисекунд, GetTickCount в мс, но его старт привязан не к астрономическому времени, а к моменту запуска компьютера.
Может, кто-нибудь посоветует? Ведь сам-то терминал выдает время в таком виде, и оно связано с астрономическим (настолько же, насколько с ним связан ход системного таймера).
Например ORDER_TIME_SETUP_MSC, ORDER_TIME_DONE_MSC, POSITION_TIME_MSC, DEAL_TIME_MSC
Как вариант:
TimeToString(HistoryOrderGetInteger(order_ticket,ORDER_TIME_SETUP),TIME_DATE|TIME_SECONDS)+"."+IntegerToString(HistoryOrderGetInteger(order_ticket,ORDER_TIME_SETUP_MSC)%1000,3,'0')
Можно через dll. Включаем:
#include <WinAPI\sysinfoapi.mqh>
SYSTEMTIME time; GetLocalTime( time );
Спасибо тем, кто ответил. Уточню: речь идет не о моменте открытия сделки и не о моменте последнего тика. Просто само текущее время на компьютере. Честно говоря, отметкам времени, проставленным на сервере, я не доверяю, поскольку крайне мало кто из ДЦ реализует хорошую синхронизацию времени с астрономическим. А на своем компьютере я добиваюсь погрешности до 12 мс от астрономического. Почему, стоит уйти из языков MQL, сразу появляется доступ к локальному времени, связаннному с системным таймером, с точностью в мс, даже до микросекунд, а в MQL4 и MQL5 только целые секунды, хотя сам терминал работает с этим временем и показывает мс? Вот это удивительно...
Неужели придется устраивать танцы с экспериментальным определением положения концов круглых секунд в нумерации из GetTickCount? Может, есть доступ ко времени, которой выдается в лог-файлы? Или хотя бы можно обеспечить их запись и читать их, не закрывая терминал каждый раз? Тогда выводить в них номера из GetTickCount и все...

- www.mql5.com
Спасибо тем, кто ответил. Уточню: речь идет не о моменте открытия сделки и не о моменте последнего тика. Просто само текущее время на компьютере. Честно говоря, отметкам времени, проставленным на сервере, я не доверяю, поскольку крайне мало кто из ДЦ реализует хорошую синхронизацию времени с астрономическим. А на своем компьютере я добиваюсь погрешности до 12 мс от астрономического. Почему, стоит уйти из языков MQL, сразу появляется доступ к локальному времени, связаннному с системным таймером, с точностью в мс, даже до микросекунд, а в MQL4 и MQL5 только целые секунды, хотя сам терминал работает с этим временем и показывает мс? Вот это удивительно...
Неужели придется устраивать танцы с экспериментальным определением положения концов круглых секунд в нумерации из GetTickCount? Может, есть доступ ко времени, которой выдается в лог-файлы? Или хотя бы можно обеспечить их запись и читать их, не закрывая терминал каждый раз? Тогда выводить в них номера из GetTickCount и все...
как-то экспериментировал..но чё-то оно всё одно медленно "плыло" в милисек. и забил на это дело. Всё одно DLL использую, не грех и системное дёрнуть
GetTickCount не только не привязан, но еще и дискретизирован. Числа которые эта функция возвращает прыгают скачками на 15-16 мс.
В MT есть функция получения счетчиков микросекунд, но (почему-то) функция для локального времени ограничена точностью в 1 секунду. Поэтому используйте через dll.
Если захотеть можно получить локальное время даже точнее чем 1 мс, так как на современных компах локальные часы обычно имеют точность 100 мкс.
интересно правильно я Millisecond проверяю ???
//+------------------------------------------------------------------+ //| OnTimer.mq5 | //| Copyright 2020, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" input int milliseconds=0; // количество миллисекунд //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- EventSetMillisecondTimer(milliseconds); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ //| OnTimer tick function | //+------------------------------------------------------------------+ void OnTimer() { //--- Print("Millisecond: ",milliseconds); } //+------------------------------------------------------------------+
интересно правильно я Millisecond проверяю ???
всё понял - всё работает как надо !
GetTickCount не только не привязан, но еще и дискретизирован. Числа которые эта функция возвращает прыгают скачками на 15-16 мс.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Смотрю в лог-файлы терминала, вижу 12:41:32.818 в
"ER 0 12:41:32.818 Terminal update C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5 folder started"
и слюнки текут. Где в программе на MQL5 добыть такое же шикарное время? TimeLocal дает без миллисекунд, GetTickCount в мс, но его старт привязан не к астрономическому времени, а к моменту запуска компьютера.
Может, кто-нибудь посоветует? Ведь сам-то терминал выдает время в таком виде, и оно связано с астрономическим (настолько же, насколько с ним связан ход системного таймера).