Market closed - страница 8

 
fxsaber:

Скрипт в комментарии к чарту показывает этот баг

В СД есть заявка по этой проблеме? У Вас вроде их больше сотни, еще незакрытых?
 

Vasiliy Pushkaryov:
В СД есть заявка по этой проблеме?

Support Team 2018.01.24 07:13

Вы должны иметь в виду, что виндовс (юникс тоже) никогда не явлвлась операционной системой реального времени. Это означает, что измерение времени в такой системе не является приоритетом и допускает погрешности.

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

В Вашем случае Вы должны выбрать критичный дискрет таймера. Если выберете самый минимальный - 1 миллисекунду, то готовьтесь терять на генерации сообщений, выборке сообщений, обработке сообщений в 1000 раз больше чем при дискрете в 1000 мс. То есть, ищите для себя разумный компромисс

У Вас вроде их больше сотни, еще незакрытых?

Да.

 

fxsaber:

Попробовал так синхронизироваться

Не получается. И у меня нехорошие мысли в сторону лага MT5. Посмотрите сами, как Ваш скрипт будет вести себя с этими изменениями.

Попробовал с Вашим кодом, все равно, отстает. Будем ждать, когда обратят на это внимание больше людей или более влиятельные сотрудники компании, раз СД пишет, что задержки это норма.


 
Vasiliy Pushkaryov:

Попробовал с Вашим кодом, все равно, отстает. Будем ждать, когда обратят на это внимание больше людей или более влиятельные сотрудники компании, раз СД пишет, что задержки это норма.

Ну так вроде всё логично, в Обзоре рынка время последнего тика по любому символу, а в окне символа - время тика по символу. От этого и разногласия, тики то не одновременно приходят

 
Vitaly Muzichenko:

Ну так вроде всё логично, в Обзоре рынка время последнего тика по любому символу, а в окне символа - время тика по символу. От этого и разногласия, тики то не одновременно приходят

TimeCurrent - см. Справку.

 
fxsaber:

TimeCurrent - см. Справку.

Ну всё верно: последнее время сервера. Нет тика - нет времени, а вот в обзоре рынка по какой-то паре всегда есть тик, поэтому время не соответствует со временем по символу, где тик был "давно"

 
Vitaly Muzichenko:

Ну всё верно: последнее время сервера. Нет тика - нет времени, а вот в обзоре рынка по какой-то паре всегда есть тик, поэтому время не соответствует со временем по символу, где тик был "давно"

TimeCurrent в каждый момент времени выдает одинаковые значения для любой MQL-проги.

 
Vitaly Muzichenko:

Ну всё верно: последнее время сервера. Нет тика - нет времени, а вот в обзоре рынка по какой-то паре всегда есть тик, поэтому время не соответствует со временем по символу, где тик был "давно"

Я тоже так помнил. Но там справку дополнили:

"В других случаях (вызов в обработчиках OnInit(), OnDeinit(), OnTimer() и так далее) это – время прихода последней котировки по любому символу, доступного в окне "Обзор рынка", то самое время, которое показано в заголовке этого окна."

В коде именно OnTimer с интервалом 0,5 сек. Как видно на скрине выше, я запросто могу вручную поймать на PrintScreen, когда время показанное в заголовке окна не соответствует TimeCurrent().

 
Vasiliy Pushkaryov:

Я тоже так помнил. Но там справку дополнили:

"В других случаях (вызов в обработчиках OnInit(), OnDeinit(), OnTimer() и так далее) это – время прихода последней котировки по любому символу, доступного в окне "Обзор рынка", то самое время, которое показано в заголовке этого окна."

Справка изначально лгала:

В обработчике OnTick() данная функция вернет время пришедшего обрабатываемого тика

Это, конечно, не так. Скрипт, чтобы убедиться
void OnTick()
{
  Print(TimeCurrent());
  
  Sleep(10000);

  Print(TimeCurrent());  
}
 
fxsaber:

Справка изначально лгала:

Это, конечно, не так. Скрипт, чтобы убедиться
Не совсем понятно, что тут не так.
Причина обращения: