При размещении советника на чарт возникла ошибка 4401:
ERR_HISTORY_NOT_FOUND | 4401 | Запрашиваемая история не найдена |
в строке программы:
по логике программы советник при такой ситуации у меня выгружается.
Многочисленные попытки загрузить советник давали аналогичную ошибку.
Тестовый советник:
Выдавал аналогичные сообщения об ошибке 4401:
Ошибка пропала только после перезагрузки терминала, тестовая программа стала выдавать:
Вопрос:
Есть ли возможность каких-либо программных действий для инициализации истории терминала и устранении ошибки 4401 не прибегая к перезагрузке терминала?
Эта ошибка, насколько я помню, преодолевается потиково. Т.е. получили ошибку - вышли из функции, на следующем тике снова выполнили запрос истории.
А вообще, чтобы поддерживать историю по чужому символу/периоду в актуальном состоянии, нужно вызывать Bars() с нужным символом/периодом раз в минуту. Можно через таймер настроить.
Эта ошибка, насколько я помню, преодолевается потиково. Т.е. получили ошибку - вышли из функции, на следующем тике снова выполнили запрос истории.
А вообще, чтобы поддерживать историю по чужому символу/периоду в актуальном состоянии, нужно вызывать Bars() с нужным символом/периодом раз в минуту. Можно через таймер настроить.
Спасибо, возможно и так, но у меня ошибка возникает в секции OnInit(), поэтому потиково мне не очень подходит. Хотелось бы получить корректные данные уже при инициализации советника, а не в процессе его работы с тиками в OnTick().
Спасибо, возможно и так, но у меня ошибка возникает в секции OnInit(), поэтому потиково мне не очень подходит. Хотелось бы получить корректные данные уже при инициализации советника, а не в процессе его работы с тиками в OnTick().
Не уверен, что получение исторических данных в функции инициализации - хорошая затея. Она не должна для этого использоваться. Поясните, пожалуйста, какой в этом смысл?
Хочу проверить достаточно ли данных например для рисования графических объектов. Почему бы не сделать это при инициализации? Почему терминал нельзя синхронизировать в OnInit() (и даже не синхронизировать, а просто проверить его состояние!!!)? Вроде бы нигде про такие ограничения не написано.
Я конечно сделаю повторную инициализацию в OnTick() при необходимости (если не удалась в OnInit()). Но есть определенные сомнения, что поможет. Так как я многократно повторно запускал советник, а ошибка повторялась до тех пор, пока не был перезагружен терминал.Хочу проверить достаточно ли данных например для рисования графических объектов. Почему бы не сделать это при инициализации? Почему терминал нельзя синхронизировать в OnInit() (и даже не синхронизировать, а просто проверить его состояние!!!)? Вроде бы нигде про такие ограничения не написано.
Прочитайте здесь для чего можно использовать OnInit(). Тут, конечно, не запрещают получать историю в функции инициализации, но историю нужно сначала подготовить. Не факт, что в момент инициализации Вы получите доступ к необходимым данных. Лучше все проверки истории из блока инициализации вынести.
Алексей, проблема не в том, что нет доступа к данным, проблема в том что терминал однажды отказав в таком доступе не сбрасывает это состояние при новом старте советника. После перезагрузки терминала ошибка не возникает при многократных попытках запуска того же самого кода. То есть проблема в нестабильности поведения терминала. К сожалению ошибка очень трудно повторимая, поймать такую ситуацию повторно не могу.
Алексей, проблема не в том, что нет доступа к данным, проблема в том что терминал однажды отказав в таком доступе не сбрасывает это состояние при новом старте советника. После перезагрузки терминала ошибка не возникает при многократных попытках запуска того же самого кода. То есть проблема в нестабильности поведения терминала. К сожалению ошибка очень трудно повторимая, поймать такую ситуацию повторно не могу.
Несомненно так бы и поступил, если бы повторяемость была. Не могу повторить ошибку. Могу лишь отметить, что она возникла при сильной активности рынка после нонфарма. Спасибо за участие, буду встраивать реинициализацию в OnTick() или OnTimer(), надеюсь в другой раз поможет, но уверенности нет.
Несомненно так бы и поступил, если бы повторяемость была. Не могу повторить ошибку.
Выход один - после запроса данных через CopyRates (не Bars, т. к. bars не инициирует подкачку данных) и получения отрицательного результата нужно уходить на ожидание окончания подкачки данных.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
ERR_HISTORY_NOT_FOUND
4401
Запрашиваемая история не найдена
в строке программы:
по логике программы советник при такой ситуации у меня выгружается.
Многочисленные попытки загрузить советник давали аналогичную ошибку.
Тестовый советник:
Выдавал аналогичные сообщения об ошибке 4401:
Ошибка пропала только после перезагрузки терминала, тестовая программа стала выдавать:
Вопрос:
Есть ли возможность каких-либо программных действий для инициализации истории терминала и устранении ошибки 4401 не прибегая к перезагрузке терминала?