Ошибки, баги, вопросы - страница 1153
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не воспроизводится видео в постах форума. на месте видео пустое место. перепробовал много браузеров. устройство - Lenovo K900.
А установленную в Windows 8.1 программу вы как запускаете? Через /portable?
Если работать в Windows 8.1 с правами обычного пользователя - то терминал MT5 не запоминает введенные номера счетов. Так-же MetaEditor не сохраняет состояние MQL5 Storage. Лечиться все, только если работать под учётной записью администратора или если в свойствах файлов metaeditor64.exe и terminal64.exe выставить «Выполнять эту программу от имени администратора».
P.S. терминал самый последний - но проблема не нова.
Добрый день.
У меня довольно ресурсоемкий индикатор (который высчитывается из 7+ массивов), загружается он нормально только «через раз» в терминале, не знаю по какой причине. Ошибок нет в нем, это уже с самим терминалом MT5 что-то...
Хотелось бы протестировать его в тестере, но в тестере он постоянно выдает ошибку: скриншот прикрепил.
Подскажите, есть ли ли возможность обработать ошибку до старта тестера и принудительно перезагружать индикатор в тестере если она появляется?
Добрый день.
У меня довольно ресурсоемкий индикатор (который высчитывается из 7+ массивов), загружается он нормально только «через раз» в терминале, не знаю по какой причине. Ошибок нет в нем, это уже с самим терминалом MT5 что-то...
Хотелось бы протестировать его в тестере, но в тестере он постоянно выдает ошибку: скриншот прикрепил.
Подскажите, есть ли ли возможность обработать ошибку до старта тестера и принудительно перезагружать индикатор в тестере если она появляется?
.
Ошибка у Вас в коде, а не в терминале. Даже есть подсказка, где искать ошибку: строка 302, позиция 49. Ошибка эта - выход массива из своего диапазона. Т.е.,например, есть массив размерностью [4], а Вы пытаетесь получить значение [5].
Я не могу ее поправить, массив заполняется котировками (100%) или значениями индикаторов. В терминале в определенный момент времени значение котировок или индикаторов X выдает NULL, а в другой момент - выдает нормальное значение (не на 0-м баре). Я не в курсе почему так происходит.
Значение NULL в тестере присутствует постоянно. Ошибка возникает, когда я пытаюсь умножать котировку или значение индикатора, но там NULL.
Я не могу ее поправить, массив заполняется котировками (100%) или значениями индикаторов. В терминале в определенный момент времени значение котировок X выдает NULL, а в другой момент - выдает нормальное значение (не на 0-м баре). Я не в курсе почему так происходит.
Значение NULL в тестере присутствует постоянно. Ошибка возникает, когда я пытаюсь умножать котировку или значение индикатора, но там NULL.
Код который я привёл - это код из индикатора и из функции OnInit(). Соответственно OnInit() обрабатывается в момент запуска терминала - и этот код правильно отображает стоимость тика. Именно OnInit() , а не init() - как у Вас. Если ошибка повторяется, то выкладывайте код и версию терминала.
Ошибка в том, что Вы пытаетесь получать рыночную информацию (MarketInfo...) в OnInit() из индикатора. Индикатор не имеет торговых функций и, соответственно, при инициализации не ждет обновления информации о счете и о рыночной информации.
Для получения данных о рыночном окружении используйте OnInit() эксперта, а не индикатора.
Если же нужно использовать рыночную информацию в индикаторе, то следует вводить флаг (bool) и проверять корректность информации о счете (Account...) в функции OnCalculate() в случае первого запуска или в OnInit() в случае смены таймфрейма или настроек индикатора.
Не вводите людей в заблуждение. Вне зависимости от того, используется ли init() или OnInit() индикатора, терминал не гарантирует, что этот обработчик будет вызван тогда, когда уже произведен логин и стоимость тика известна. Так что в OnInit тоже легко получить ноль. Также нет никаких запретов на использование в индикаторах рыночной информации. Но в этом случае действительно приходится переносить инициализацию в расчетную часть индикатора и выполнять её на первых тиках.
В индикаторе нет торговых функций. В советнике есть торговые функции. Поэтому в советнике, при обращении к рыночному окружению и/или к информации о счете, в OnInit() всё проходит корректно.
В подтверждение моих слов - вот простой советник у которого в OnInit() идёт обращение к торговому окружению и к информации о счете:
В индикаторе нет торговых функций. В советнике есть торговые функции. Поэтому в советнике, при обращении к рыночному окружению и/или к информации о счете, в OnInit() всё проходит корректно.
В подтверждение моих слов - вот простой советник у которого в OnInit() идёт обращение к торговому окружению и к информации о счете: