Ошибки, баги, вопросы - страница 2934
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
ну так сделайте выход, если данные не скопированы
При повторном тике уже всё будет подгружено и код отработает правильно
Как раз нет, в моём случае код отработает чудовищно некорректно, в индикаторе объекты сползут со своих позиций к чёртовой бабушке. Буду разбираться с подгрузкой истории...
Здравствуйте, я тестирую своего робота, после окончания тестирования увидел в Журнале много полей с реквотами, что означают эти пачки сообщений и что можно в коде дописать чтобы они не появлялись? Спасибо, с наступающим НГ!
Предполагаю, что в символе сессия торговли меньше, чем сессия котирования. Тогда котиры идут в Тестере, но торговля по ним запрещена в такие периоды.
Маразм в том, что по https://www.mql5.com/ru/docs/series/timeseries_access в статье о подгрузке истории в коде упоминается Sleep(), а справка по Sleep() гласит: "Функцию Sleep() нельзя вызывать из пользовательских индикаторов, так как индикаторы выполняются в интерфейсном потоке и не должны его тормозить." А мне, получается, подгружать историю нужно как раз в индикаторе.
Чей маразм?
При запросе данных из индикатора (а не из эксперта) эти самые данные отдаются сразу какие есть, без задержки. Виталий правильно сказал.
сделайте запрос нужного символа-периода в OnInit, чтобы проинициировать построение нужной истории
Чей маразм?
При запросе данных из индикатора (а не из эксперта) эти самые данные отдаются сразу какие есть, без задержки. Виталий правильно сказал.
сделайте запрос нужного символа-периода в OnInit, чтобы проинициировать построение нужной истории
1. Если я правильно понял, Вы предлагаете сделать запрос один-единственный раз в OnInit, в самом начале работы индикатора. Здесь https://www.mql5.com/ru/docs/runtime/event_fire событие Init обложенно массой сопутствующих условий: "Это событие также генерируется после смены финансового инструмента и/или периода графика, после перекомпиляции программы в редакторе MetaEditor, после смены входных параметров из окна настройки эксперта или пользовательского индикатора. Советник также инициализируется после смены счета." Но пользователь не обязан генерировать эти события, ему может быть комфортно сидеть на единственном текущем ТФ и наблюдать за индикатором, поэтому переинициализации и дозагрузки истории более одного раза уже не будет. Однако нехватка истории возникает не обязательно в начале работы, ошибка внезапно и неоднократно появляется в произвольное время в процессе работы (более того, в течение длительной работы индикатора она может вообще не появиться ни разу; зачастую никакой ошибки в начале работы и не возникает). Тогда и нехватающую часть истории нужно подгружать не только в OnInit, но и в OnCalculate, дабы предупреждать повторяющуюся ошибку?
Или под "проинициировать построение нужной истории" Вы имели в виду, что достаточно один раз это сделать в OnInit и в дальнейшем повторять этого не нужно будет? Однако замечу, что, с одной стороны, ошибка таки вылезает даже когда вся история инструмента загружена и все ТФы отстроены, поскольку индикатор мультитаймфреймовый и рилтаймовый; с другой стороны, при тех же условиях ошибка может и не вылезать.
2. Что означает само понятие "нехватка части истории"? Когда впервые после установки запускаешь терминал, он докачивает нехватающую историю — буквально то, что слева, более ранее по времени. У меня же происходит CopyTime(_Symbol,tf,0,1,Arr), то есть копирование одного самого свежего бара справа, а не исторического. Неужели новый бар каким-то боком может относиться к истории и её нехватке??
3. Допускаю, что моих туманных объяснений для понимания проблемы может оказаться мало, не хочу быть отправленным в https://www.mql5.com/ru/forum/133408, поэтому готов предоставить разработчикам и всем желающим код с комментариями для совместного дебага, поскольку индикатор собираюсь зарелизить как бесплатный, в свободный доступ через CodeBase. Кстати, раз на то пошло, допустимо ли релизить неотдебаженный бесплатный код?
1. Если я правильно понял, Вы предлагаете сделать запрос один-единственный раз в OnInit, в самом начале работы индикатора. Здесь https://www.mql5.com/ru/docs/runtime/event_fire событие Init обложенно массой сопутствующих условий: "Это событие также генерируется после смены финансового инструмента и/или периода графика, после перекомпиляции программы в редакторе MetaEditor, после смены входных параметров из окна настройки эксперта или пользовательского индикатора. Советник также инициализируется после смены счета." Но пользователь не обязан генерировать эти события, ему может быть комфортно сидеть на единственном текущем ТФ и наблюдать за индикатором, поэтому переинициализации и дозагрузки истории более одного раза уже не будет. Однако нехватка истории возникает не обязательно в начале работы, ошибка внезапно и неоднократно появляется в произвольное время в процессе работы (более того, в течение длительной работы индикатора она может вообще не появиться ни разу; зачастую никакой ошибки в начале работы и не возникает). Тогда и нехватающую часть истории нужно подгружать не только в OnInit, но и в OnCalculate, дабы предупреждать повторяющуюся ошибку?
Или под "проинициировать построение нужной истории" Вы имели в виду, что достаточно один раз это сделать в OnInit и в дальнейшем повторять этого не нужно будет? Однако замечу, что, с одной стороны, ошибка таки вылезает даже когда вся история инструмента загружена и все ТФы отстроены, поскольку индикатор мультитаймфреймовый и рилтаймовый; с другой стороны, при тех же условиях ошибка может и не вылезать.
2. Что означает само понятие "нехватка части истории"? Когда впервые после установки запускаешь терминал, он докачивает нехватающую историю — буквально то, что слева, более ранее по времени. У меня же происходит CopyTime(_Symbol,tf,0,1,Arr), то есть копирование одного самого свежего бара справа, а не исторического. Неужели новый бар каким-то боком может относиться к истории и её нехватке??В индикаторах вам никто не гарантирует выдачи запрашиваемых данных, если они не готовы.
Мне со своей невысокой колокольни кажется, что запрашиваемые данные как раз готовы, ибо они являют собой новейший на текущий момент времени бар. Как он может быть не готов? Если он появился на чарте, значит, готов.
В индикаторах вам никто не гарантирует выдачи запрашиваемых данных, если они не готовы.
Круто... Даже в новый год на посту. С новым годом.!!!!!!!
Мне со своей невысокой колокольни кажется, что запрашиваемые данные как раз готовы, ибо они являют собой новейший на текущий момент времени бар. Как он может быть не готов? Если он появился на чарте, значит, готов.
Прочтите внимательно мой ответ.
Надо определиться с понятием доступности данных. Если я вижу бар в терминале, он уже доступен или возможны другие варианты? И да, Renat, как насчёт 3-го пункта моего предыдущего поста?
Надо определиться с понятием доступности данных. Если я вижу бар в терминале, он уже доступен или возможны другие варианты? И да, Renat, как насчёт 3-го пункта моего предыдущего поста?