![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
... Тут явно ошибкой терминала пахнет.
Прежде, надо прочитать и видимо не один раз - "Организация доступа к данным".
"Для экономии ресурсов данные по таймфрейму загружаются и хранятся в оперативной памяти только по необходимости, при длительном отсутствии обращений к данным происходит выгрузка их из оперативной памяти с сохранением в файл."
"При доступе к ценовым данным или к значениям индикаторов из mql5-программ следует помнить, что не гарантируется их доступность в определенный момент времени, либо с определенного момента времени. Это связано с тем, что в целях экономии ресурсов в MetaTrader 5 не хранится полная копия требуемых данных для mql5-программы, а дается прямой доступ к базе данных терминала."
"Поскольку mql5-программа может обратиться к данным по любому символу и таймфрейму, то есть вероятность, что данные требуемой таймсерии еще не сформированы в терминале или требуемые ценовые данные не синхронизированы с торговым сервером."
Прежде, надо прочитать и видимо не один раз - "Организация доступа к данным".
"Для экономии ресурсов данные по таймфрейму загружаются и хранятся в оперативной памяти только по необходимости, при длительном отсутствии обращений к данным происходит выгрузка их из оперативной памяти с сохранением в файл."
"При доступе к ценовым данным или к значениям индикаторов из mql5-программ следует помнить, что не гарантируется их доступность в определенный момент времени, либо с определенного момента времени. Это связано с тем, что в целях экономии ресурсов в MetaTrader 5 не хранится полная копия требуемых данных для mql5-программы, а дается прямой доступ к базе данных терминала."
"Поскольку mql5-программа может обратиться к данным по любому символу и таймфрейму, то есть вероятность, что данные требуемой таймсерии еще не сформированы в терминале или требуемые ценовые данные не синхронизированы с торговым сервером."
Хорошо, так как быть, как организовать эту доступность? Если нужно вызывать CopyRates() другого периода?
Я специально для этого выложил шаблон для тестов, варианты которые перепробовал я:
1) Ждать через Sleep()
2) Пропускать возвращая prev_calculated
3) Вызывать CheckLoadHistory в OnInit или перед каждым CopyRates()
... не работает именно первая инициализация или после перезапуска терминала.
Попробуйте сами в самом первом посте исходник, он очень простой!
Попробуйте сами в самом первом посте исходник, он очень простой!
Держите.
Сегодня нет тиков, поэтому если индикатор не рисует, то надо обновить график(меню правой кнопки мыши).
Yurich:
Держите.
Сегодня нет тиков, поэтому если индикатор не рисует, то надо обновить график(меню правой кнопки мыши).
Проблема все там же! Вы переключите тайм фрейм графика не в D1, закройте терминал, потом снова откройте терминал и вуаля окошко под индикатор пустое! А должно быть заполнено! А вы только вывод сообщения об ошибке доступа к истории за комментировали :)
Проблема все там же! Вы переключите тайм фрейм графика не в D1, закройте терминал, потом снова откройте терминал и вуаля окошко под индикатор пустое! А должно быть заполнено! А вы только вывод сообщения об ошибке доступа к истории за комментировали :)
Посмотрите внимательнее :)
Сегодня нет тиков, если есть ошибка в доступе к данным, то прерывается OnCalculate() до следующего тика. Что бы вызвать повторное OnCalculate() - обновите чарт. У меня все работает.
Посмотрите внимательнее :)
Сегодня нет тиков, если есть ошибка в доступе к данным, то прерывается OnCalculate() до следующего тика. Что бы вызвать повторное OnCalculate() - обновите чарт. У меня все работает.