Как добраться до тиков [как добраться до миллисекунд] ?

 

Следующий скрипт считает, что переменные равны, хотя на самом деле они отличаются одним тиком:

void start() {
      datetime t1 = D'01.01.12 00:12:01.123';
      datetime t2 = D'01.01.12 00:12:01.124';
      if (t1<t2) Print ("<"); else if (t1>t2) Print (">"); else Print ("=");
}
 
LEOK:

Следующий скрипт считает, что переменные равны, хотя на самом деле они отличаются одним тиком:

в datetime нету миллисекунд, потому и равны

https://docs.mql4.com/ru/basis/types/datetime

 
ilunga:

в datetime нету миллисекунд, потому и равны

https://docs.mql4.com/ru/basis/types/datetime


Да это всем известно !

Я имел ввиду, что компиляция прошла успешно, а тики не воспринимаются. Как сделать так, чтобы до них добраться или как ВЫ решаете эту проблему ?!

 
LEOK:


Да это всем известно !

Я имел ввиду, что компиляция прошла успешно, а тики не воспринимаются.

Компиляция всегда проходит успешно если в коде не обнаружено синтаксических ошибок, т.е. независимо от тиков и тараканов в голове кодера.

Вам же ответили, что в переменной datetime миллисекунды не учитываются, а соответственно попытки выявить разницу в менее, чем 1 секунда = 1000 миллисекунд невозможно.

Название топика вводит в заблуждение. Нужно было написать: как добраться до миллисекунд?

 
Reshetov:

Компиляция всегда проходит успешно если в коде не обнаружено синтаксических ошибок, т.е. независимо от тиков и тараканов в голове кодера.

Вам же ответили, что в переменной datetime миллисекунды не учитываются, а соответственно попытки выявить разницу в менее, чем 1 секунда = 1000 миллисекунд невозможно.

Название топика вводит в заблуждение. Нужно было написать: как добраться до миллисекунд?


Понятно. Спасибо, что поправили ...
 
LEOK:Следующий скрипт считает, что переменные равны, хотя на самом деле они отличаются одним тиком:

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

https://www.mql5.com/ru/code/7777,если не ошибаюсь, то там и реализована запись тика после изменения цены, средствами mql миллисекунды можно получить лишь GetTickCount( ), но и то лишь относительно старта системы

 
Существуют тики без изменения цены. Такое часто случается.
 

Вопрос был о миллисекундах, к тикам он никакого отношения не имеет. Топикстартер был введен в заблуждение функцией GetTickCount().

IgorM: средствами mql миллисекунды можно получить лишь GetTickCount( ), но и то лишь относительно старта системы

Когда угодно можно. Я этим часто пользуюсь для измерения производительности.

 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start(){
   int start_ms = GetTickCount();
   while(!IsStopped())
      Comment((GetTickCount() - start_ms)%1000," ms");
return(0);
}
 
IgorM:


Sleep в цикле забыли !

А то такой скрипт терминал вешает ...

 
LEOK:


Sleep в цикле забыли !

А то такой скрипт терминал вешает ...

у меня не вешает, давным давно, кажется на 225 билде или старше, было дело "вешался" терминал, на 409 билде - все ОК, ничего не повисло :)
Причина обращения: