Сервисдеск. Жалобы, предложения. - страница 7

 
Ilya Malev:
Встретил только что Вашу проблему уже в МТ5 в индикаторе, не выходя из одного цикла OnTimer, проверяю таймсерию на другом символе/периоде (не текущем) - функция говорит, что она построена и дает корректное число баров. Вызываю сразу после этого другую функцию построения индикатора - внутри неё уже, вызванной не выходя из одного и того же вызова OnTimer, таймсерия умудряется выгрузится и SeriesInfoInteger уже возвращает нули. Пришлось встраивать дополнительную циклическую проверку, чтобы все строилось само без поступления тиков.

Какой билд терминала МТ5? Михаил писал, что в МТ5 в билде 1200 все должно быть хорошо:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Сервисдеск. Жалобы, предложения.

Михаил, 2015.10.29 17:46

Проблему с данными в индикаторах я поднимал давно!

https://www.mql5.com/ru/forum/42180

Меня заверили, что проблему решили.

Об этом даже написали в аннотации к релизу 1200

17. Terminal: Исправлена ошибка, приводившая к выгрузке исторических данных как неиспользуемых, несмотря на регулярные обращения к данным из MQL5 программ. 

 А если билд новый, а ошибка сохранилась - в сервисдеск с доказательствами!

 
Alexey Kozitsyn:

Какой билд терминала МТ5? Михаил писал, что в МТ5 в билде 1200 все должно быть хорошо:

 А если билд новый, а ошибка сохранилась - в сервисдеск с доказательствами!

Билд тот самый 1200/64. Чтобы воспроизвести ошибку, нужно смоделировть ситуацию, которая у меня возникала в довольно сложном продукте, который я не могу отправить в деск. Займусь этим как освобожусь немного от работы.
 

Топикстартеру в первом же ответе был дан совет по его проблеме, который он, топикстартер, проигнорировал.

Stanislav Starikov| 10.29 12:41

Для того, чтобы получать актуальные данные с чужого символа-периода необходимо обращаться к этим данным чаще, чем 1 раз в 10 секунд. Либо обратиться к этим данным из эксперта, например при помощи iTime (тогда к данным можно обращаться не реже, чем 1 раз в 3 минуты)


Топикстартер явно видел этот совет, так как в его индикаторе, который он представил здесь, есть закомментаренный код

         //if( bars_count == 0 || firstDate == 0 || serv_firstDate == 0 )
         //     {
         //      Print( "Подкачка iTime()" );
         //      datetime tm = iTime( _Symbol, period, 0 );
         //     }

Если в OnInit и в начале OnCalculate вставить безусловный вызов iTime(_Symbol,period,0), то никаких описанных выше проблем просто не будет

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

 
Slawa:

Топикстартеру в первом же ответе был дан совет по его проблеме, который он, топикстартер, проигнорировал.

Stanislav Starikov| 10.29 12:41

Для того, чтобы получать актуальные данные с чужого символа-периода необходимо обращаться к этим данным чаще, чем 1 раз в 10 секунд. Либо обратиться к этим данным из эксперта, например при помощи iTime (тогда к данным можно обращаться не реже, чем 1 раз в 3 минуты)


Топикстартер явно видел этот совет, так как в его индикаторе, который он представил здесь, есть закомментаренный код

Если в OnInit и в начале OnCalculate вставить безусловный вызов iTime(_Symbol,period,0), то никаких описанных выше проблем просто не будет

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

Вячеслав, Вы сейчас к кому обращаетесь? Ко мне? Или к Илье?

Если к Илье, то он говорит уже про mql5, читайте, пожалуйста, внимательнее, прежде чем отвечать. Не раз уже говорил, что Вы торопитесь ответить, не разобравшись в деталях.

Я Ваш совет видел, закомментированный код тому подтверждение, спасибо, помогло. Раз Ренат сказал, что будет исправлена агрессивная выгрузка данных, то не стоит дальше продолжать обсуждение mql4.

А вот если такая же ситуация продолжается и в mql5, хотя должно быть исправлено, начиная с билда 1200, то тут тогда как быть? 

И еще раз повторюсь, если Вы (разработчики) ничего менять не будуте в mql4, добавьте в документацию, что SeriesInfoInteger() только собирает существующую информацию, и все! Все вопросы отпадут, либо же можно будет просто ткнуть носом в документацию! 

 
Alexey Kozitsyn:

Вячеслав, Вы сейчас к кому обращаетесь? Ко мне? Или к Илье?

Поскольку было упомянуто iTime, речь явно об МТ4. Я пока не приводил конкретного примера кода чтобы мне отвечать.
 
Ilya Malev:
Поскольку было упомянуто iTime, речь явно об МТ4. Я пока не приводил конкретного примера кода чтобы мне отвечать.
Это я понял, но, скорее всего и обращались к Вам. Но Вы писали про ошибку в mql5.
 
Alexey Kozitsyn:
Это я понял, но, скорее всего и обращались к Вам. Но Вы писали про ошибку в mql5.
Я не топикстартер :)
 
Ilya Malev:
Я не топикстартер :)
Да, но пост походил на объяснение Вам того, чего я, по мнению Вячеслава, не уловил.
 
Alexey Kozitsyn:
Да, но пост походил на объяснение Вам того, чего я, по мнению Вячеслава, не уловил.

А по-моему, это такая манера общения к Вам :)

Я ещё вернусь к своей проблеме и предоставлю проверочный код. Если только в билде 1210 что-то не исправили. Пока сделал циклическую проверку и поехал дальше, останавливаться не досуг.

 
Ilya Malev:
Напишите потом результат Ваших опытов с историей в МТ4)

Начал опыты по загрузке истории с нуля. Т.е. удаляю всю историю по символу и запускаю терминал. Настройка терминала макс. баров в окне = 5000. 

Если в МТ5 использовать подобие скрипта из "Организация доступа к данным" - то видно, что история подгружается либо до максимального количества баров, либо же до последней даты на сервере.

В МТ4 же используя подобную схему - данные не подгружаются. Т.е. доступно изначально где-то 2050 и, чтобы получить больше истории, нужно прокручивать график вглубь истории.

Также заметил одну особенность. При прокрутке, если подкачиваются новые бары, то prev_calculated сбрасывается в 0 (работает как кнопка "Обновить").

Уважаемые разработчики. Прокомментируйте пожалуйста, можно ли каким-нибудь образом подкачать историю без использования прокрутки графика (МТ4!). 

Причина обращения: