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

 
Имейте в виду, если миллисекунды и наносекунды настолько важны, что эти тики поступают через Интернет (сетевой IO). Разрешение времени в некосекунды, вероятно, излишне, если только вы не планируете что-то непотребное!
 
angevoyageur:
В mql5 такой информации тоже нет. Но есть события Timer, которые могут быть использованы с точностью до миллисекунды, хотя я не знаю, будет ли эта возможность доступна в новом mql4.

Текущий эквивалент mql4 выглядит примерно так, как показано ниже:

void start(){
    while(true){
        do_something....;
        Sleep(1000); //Sleep for one Second.
        RefreshRates();
    }
}

void start(){
    static bool RunOnce;
    if(RunOnce) return;
    int Begin=GetTickCount();
    while(GetTickCount()<Begin+1000){
        Print("GetTickCount()="+GetTickCount());
        Sleep(1);
    }
    RunOnce=true;
}

Я протестировал GTC, и он, похоже, прыгает на 16 миллисекунд. Выяснилось, что это, вероятно, какое-то ограничение Computer_Science в устаревших системах. Если кто-нибудь захочет объяснить почему, несмотря на мои бредни, я буду рад. Хм, интересно, у mql5 есть такие же ограничения? Хорошо, еще один тест на подходе :)

 

Всегда стоит усилий выяснить, какую функцию Widows API инкапсулировали разработчики MQL.

В данном случае ответ прост - они использовали GetTickCount В ней говорится:

Разрешение функцииGetTickCount ограничено разрешением системного таймера, которое обычно находится в диапазоне от 10 миллисекунд до 16 миллисекунд.

 

Я уже гуглил, и хотя я не очень понимаю, похоже, что GetTickCount() - это функция непосредственно из ОС windows. Она не предназначена для точности и не должна использоваться для вещей, которые требуют точности до уровня миллисекунд (даже если она возвращает значения в миллисекундах).

Я проводил тесты с sleep и с get tick count и всегда есть ошибки, трудно сказать, вызваны ли они Sleep или GTC, но я думаю, что оба.

 
Ovo:

Всегда стоит усилий выяснить, какую функцию Widows API инкапсулировали разработчики MQL.

В данном случае ответ прост - они использовали GetTickCount В ней говорится:

Разрешение функцииGetTickCount ограничено разрешением системного таймера, которое обычно находится в диапазоне от 10 миллисекунд до 16 миллисекунд.

Спасибо.
 
ubzen:

Текущий эквивалент mql4 выглядит примерно так:

Я протестировал GTC, и он, похоже, прыгает на 16 миллисекунд. Выяснилось, что это, вероятно, какое-то ограничение Computer_Science в устаревших системах. Если кто-нибудь захочет объяснить почему, несмотря на мои бредни, я буду рад. Хм, интересно, у mql5 есть такие же ограничения? Хорошо, еще один тест на подходе :)

Ограничение в 16 миллисекунд связано с аппаратным ограничением, но есть и другие способы получить более точный таймер.
В mql5 есть такое же ограничение для GetTickCount(), но, как я пытался объяснить выше, есть и другие возможности, которые можно использовать (события таймера).

 
Ovo:

Всегда стоит усилий выяснить, какую функцию Widows API инкапсулировали разработчики MQL.

В данном случае ответ прост - они использовали GetTickCount В ней говорится:

Разрешение функцииGetTickCount ограничено разрешением системного таймера, которое обычно находится в диапазоне от 10 миллисекунд до 16 миллисекунд.


Да, так написано, но трудно понять, что это на самом деле означает. Если разрешение составляет 16 мс, я бы ожидал увидеть значения 0,16,32,48... и т.д.

Я никогда не вижу ничего между 0 и 16, но я вижу все значения около 16.

 
angevoyageur:

Ограничение в 16 миллисекунд связано с аппаратным ограничением, но есть и другие способы получить более точный таймер.
В mql5 есть такое же ограничение для GetTickCount(), но, как я пытался объяснить выше, есть и другие возможности, которые можно использовать (события таймера).

Понятно :)
 
RaptorUK:
Объем - это плохое название для того, что на самом деле является "количеством тиков" ... это не имеет никакого отношения к торгуемому объему/лотам ... причина, по которой он может измениться более чем на 1, заключается в том, что вы можете пропустить тики.


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

Мне действительно приходится искать реальные данные об объеме level2 у некоторых брокеров. К счастью, мой ECN-брокер предлагает торговые данные level2 с реальным объемом.