Вопрос о работe start()

 
Советник, состоящий из одной команды в теле start() : Comment(Volume[0]) работает так:
зачастую строка с текущим объемом появляется далеко не сразу а возможно через несколько (1-10, иногда гораздо больше) секунд после прихода нового тика на терминал и соответствующего изменения поля "V" в правом нижнем углу терминала.
До появления нужного значения в строке показывается одно из предыдущих значений объема.

Аналогичные задержки возникают с другими командами, т.е. сначала я вижу приход тика в терминале (графика+поле "V"), а через некоторое время - исполнение команды из start().

С чем это может быть связано?
 
qomment писал(а) >>
Советник, состоящий из одной команды в теле start() : Comment(Volume[0]) работает так:
зачастую строка с текущим объемом появляется далеко не сразу а возможно через несколько (1-10, иногда гораздо больше) секунд после прихода нового тика на терминал и соответствующего изменения поля "V" в правом нижнем углу терминала.
До появления нужного значения в строке показывается одно из предыдущих значений объема.

Аналогичные задержки возникают с другими командами, т.е. сначала я вижу приход тика в терминале (графика+поле "V"), а через некоторое время - исполнение команды из start().

С чем это может быть связано?


с загрузкой компа.
все визуализации считаются не критичными к времени исполнения, поэтому ими жертвуют, если процессорного ресурса не хватает.

 
1) комп отличный и не загружен во время работы эксперта
2) визуализация тика возникает раньше, чем исполняется Comment
 
qomment >>:
С чем это может быть связано?
MT4 - многопоточная программа. Интерфейсный поток (отображение), считается отдельно и с несколько меньшим приоритетом чем эксперты.
 
- Т.е. Comment() относится к отображению? В любом случае странно видеть, что из-за приоритета может возникать задержка до 5 и более секунд. 
- можно ли надеяться, что если вместо Comment поставить FileWriteDouble, то команда будет исполнена не сильно позже, чем новый тик стал виден в окне терминала?
 
qomment >>:
- Т.е. Comment() относится к отображению? В любом случае странно видеть, что из-за приоритета может возникать задержка до 5 и более секунд. 
- можно ли надеяться, что если вместо Comment поставить FileWriteDouble, то команда будет исполнена не сильно позже, чем новый тик стал виден в окне терминала?  


я столкнулся с такой же проблемой, оказывается, что не все котировки приходят одновременно, некоторые котировки могут замереть минуты на 2, а потом пойдут дальше, проверяю на Альпари
т.е. попробуйте повесить Ваш советник на другой график или в другую торговую сессию
 
qomment >>:
1) - Т.е. Comment() относится к отображению? В любом случае странно видеть, что из-за приоритета может возникать задержка до 5 и более секунд.
2) - можно ли надеяться, что если вместо Comment поставить FileWriteDouble, то команда будет исполнена не сильно позже, чем новый тик стал виден в окне терминала?

1) Да. Строка передаётся в интерфейсный поток и будет отрисована, когда теминалу больше будет нечего делать.

2) Да. Будет исполнена мгновенно.

 

Добавьте в конце WindowRedraw(); Без этой добавки терминал ждет следующего тика цены перед перерисовкой чарта.

 
api >>:

Добавьте в конце WindowRedraw(); Без этой добавки терминал ждет следующего тика цены перед перерисовкой чарта.

Кстати, да. Можно насильственно перерисовать.

 
Спасибо!
Причина обращения: