MT5 и скорость в боевом исполнении - страница 53

 
Roman:

А так, я пингую сервер, с определённой частотой в while без задержки.

Чаще 16 мс? Что за сервер? Какой смысл в таком частом пинге?

 
fxsaber:

Отправил в ЛС.

Если во время компиляции на 22% нажать CTRL+BREAK, то ME зависнет.

 
Andrey Khatimlianskii:

Чаще 16 мс? Что за сервер? Какой смысл в таком частом пинге?

Смысл не в 16 мс, а в цикле без задержки.
В нём читается сокет, и пингуется heartbeat.

 
Roman:

Смысл не в 16 мс, а в цикле без задержки.
В нём читается сокет, и пингуется heartbeat.

Понял, чтение сокета.

А зачем тогда вообще слип? Или чтение сокета без задержки чем-то плохо?

Смысла heartbeat с такой частотой понять не могу (

 
Andrey Khatimlianskii:

Понял, чтение сокета.

А зачем тогда вообще слип? Или чтение сокета без задержки чем-то плохо?

Смысла heartbeat с такой частотой понять не могу (

Так макрос для чего?
Сокет читается в цикле без задержки, а heartbeat выполняется с определённой частотой в этом же цикле без задержки. 
Слип тут не при делах, я ж писал, что слип до кучи написал, может пригодится.
Смысл макроса, задавать частоту выполнения какого нибудь кода в цикле без задержки.
Не обязательно heartbeat.  Можно сделать сколь угодно макросов с разной 
частотой, и в цикле без задержи они будут выполнятся по разному.
Для примера, Николай написал класс для OnTimer. https://www.mql5.com/ru/code/31306
А тут для цикла, в котором можно спустится до микросекунд.

Multi Timer
Multi Timer
  • www.mql5.com
Данная библиотека Вам пригодится, когда Вам необходимы несколько таймеров с независимой обработкой и неконфликтующие между собой. Для работы с данной библиотекой важно запомнить следующие правила: В теле вашей программы не должно быть функции OnTimer , т.к. эта функция уже присутствует в файле Timer.mhq Не надо создавать никаких экземпляров...
 
Roman:

Так макрос для чего?
Сокет читается в цикле без задержки, а heartbeat выполняется с определённой частотой в этом же цикле без задержки. 
Слип тут не при делах, я ж писал, что слип до кучи написал, может пригодится.
Смысл макроса, задавать частоту выполнения какого нибудь кода в цикле без задержки.
Не обязательно heartbeat.  Можно сделать сколь угодно макросов с разной 
частотой, и в цикле без задержи они будут выполнятся по разному.
Для примера, Николай написал класс для OnTimer. https://www.mql5.com/ru/code/31306
А тут для цикла, в котором можно спустится до микросекунд.

Так это все было об этом:

while ( true )
{
   static ulong prev = 0;
   if ( GetMicrosecondsCount() - prev >= InpPause_msc )
   {
     prev = GetMicrosecondsCount();
     // do something
   }

?


Тогда все равно не понятно, зачем микросекундный слип. Видимо, просто "до кучи". Ну, пусть будет )

 
Andrey Khatimlianskii:

Так это все было об этом:

?

Тогда все равно не понятно, зачем микросекундный слип. Видимо, просто "до кучи". Ну, пусть будет )

Ну, можно и так написать. Просто я сделал через switch и макрос.
И в твоем примере два вызова GetMicrosecondsCount, у меня один. 
А так да, слип до кучи, мало ли пригодится в этом цикле микросекундный слип.
Просто сам факт, что микросекундный слип возможен.

 
Andrey Khatimlianskii:

Понял, чтение сокета.

А зачем тогда вообще слип? Или чтение сокета без задержки чем-то плохо?

Смысла heartbeat с такой частотой понять не могу (

В данном случае слип вообще вреден. Потому что отдаёт приоритет другому потоку, затормаживая свой

 
Roman:

Ну, можно и так написать. Просто я сделал через switch и макрос.
И в твоем примере два вызова GetMicrosecondsCount, у меня один. 
А так да, слип до кучи, мало ли пригодится в этом цикле микросекундный слип.
Просто сам факт, что микросекундный слип возможен.

Невозможен

 
Slava:

Невозможен

Хорошо, перефразирую. В рамках mql примерно возможен, в зависимости от тактовой частоты процессора. 
А как же ШИМ? - импульсный сигнал постоянной частоты и переменной скважности.
Он не задаёт постоянство?