Вообщем спасибо VonDo Mix - проверил в таймере миллисекундном - полёт нормальный, накидал простенький класс, кое что исправил, так для примера и архива... Но Допилите из коробки решение!!!!!
//+------------------------------------------------------------------+ //| tTime.mqh | //| Copyright 2016, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property strict #import "kernel32.dll" void GetSystemTime (ushort &t[8]); #import /* Type SYSTEMTIME ** https://msdn.microsoft.com/en-us/library/windows/desktop/ms724950(v=vs.85).aspx */ /* USAGE ** #include "tTime.mqh" tTime _time; Print("Time with mills: "+_time.dateTimeString()); Print("Time unix epoch with mills: "+(string)_time.unixTimestamp()); */ class tTime { public: string dateTimeString(); int mills(); ulong unixTimestamp(); private: ushort b[8]; }; //+------------------------------------------------------------------+ int tTime::mills() { GetSystemTime(this.b); return this.b[7]; } //+------------------------------------------------------------------+ string tTime::dateTimeString(void) { GetSystemTime(this.b); return TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS)+"."+IntegerToString(this.b[7], 3, '0'); } //+------------------------------------------------------------------+ ulong tTime::unixTimestamp(void) { GetSystemTime(this.b); return StringToInteger(IntegerToString(TimeLocal())+IntegerToString(this.b[7], 3, '0')); } //+------------------------------------------------------------------+
можно использовать GetMicrosecondCount
Например? И нет ли там такого случайно "Счетчик ограничен разрешающей способностью системного таймера. Так как время хранится как беззнаковое целое, то он переполняется каждые 49.7 дней при непрерывной работе компьютера." ? Потому как программа должна работать, в идеале, всегда... в любом случае пока мне не нравится мысль вычислять тек. время в зависимости от времени запущенной программы... нелогично.
Например? И нет ли там такого случайно "Счетчик ограничен разрешающей способностью системного таймера. Так как время хранится как беззнаковое целое, то он переполняется каждые 49.7 дней при непрерывной работе компьютера." ? Потому как программа должна работать, в идеале, всегда... в любом случае пока мне не нравится мысль вычислять тек. время в зависимости от времени запущенной программы... нелогично.
например - синхронизировать один раз, при старте, с локальным временем, и дальше переводить время счетчика в локальное...
ничего страшного в переполнении не вижу...
и, без внешних библиотек, можно размещать продукт в маркете
а что нелогично?
Избыточно...
Приятно, что пригодилось.)
Однако для сегодняшнего уровня языка код явно избыточный.
дело в том, что тогда был только int.
Через ushort все значительно проще...
Приятно, что пригодилось.)
Однако для сегодняшнего уровня языка код явно избыточный.
дело в том, что тогда был только int.
Через ushort все значительно проще...
Добрый! Михаил, если бы вы могли потратить несколько минут своего драгоценного времени и привести пример с ushort, было бы просто замечательно! (Давно не делал ничего с побитовыми операциями просто... это надо взять книжку, вспомнить... попробовать.. ну вы понимаете :))
Добрый! Михаил, если бы вы могли потратить несколько минут своего драгоценного времени и привести пример с ushort, было бы просто замечательно! (Давно не делал ничего с побитовыми операциями просто... это надо взять книжку, вспомнить... попробовать.. ну вы понимаете :))
Они уже тогда не нужны.)
Шаманство со сдвигом было связано с отсутсвием аналога WORD в MQL.
Поэтому если вы измените описание
#import "kernel32.dll" void GetSystemTime (ushort &b[8]); #import
вы тем самым без проблем получите соответствие
SYSTEMTIME structure
typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds; } SYSTEMTIME, *PSYSTEMTIME;
Они уже тогда не нужны.)
Шаманство со сдвигом было связано с отсутсвием аналога WORD в MQL.
Поэтому если вы измените описание
вы тем самым без проблем получите соответствие
SYSTEMTIME structure
Благодарю, обновил пример...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
пс: нашёл через kernel32.dll , а стандартными то средствами языка MQL4 никак?? НЕ верю!!! (даже недавно обнаружил, что хеш функции вшили... а время то уж сделать по-человечески должно быть само-собой..)