"Для экономии ресурсов данные по таймфрейму
загружаются и хранятся в оперативной памяти только по необходимости, при
длительном отсутствии обращений к данным происходит выгрузка их из
оперативной памяти с сохранением в файл."
"При доступе к ценовым данным или к значениям
индикаторов из mql5-программ следует помнить, что не гарантируется их
доступность в определенный момент времени, либо с определенного момента
времени. Это связано с тем, что в целях экономии ресурсов в MetaTrader 5
не хранится полная копия требуемых данных для mql5-программы, а дается
прямой доступ к базе данных терминала."
"Поскольку mql5-программа может обратиться к данным
по любому символу и таймфрейму, то есть вероятность, что данные
требуемой таймсерии еще не сформированы в терминале или требуемые
ценовые данные не синхронизированы с торговым сервером."
"Для экономии ресурсов данные по таймфрейму
загружаются и хранятся в оперативной памяти только по необходимости, при
длительном отсутствии обращений к данным происходит выгрузка их из
оперативной памяти с сохранением в файл."
"При доступе к ценовым данным или к значениям
индикаторов из mql5-программ следует помнить, что не гарантируется их
доступность в определенный момент времени, либо с определенного момента
времени. Это связано с тем, что в целях экономии ресурсов в MetaTrader 5
не хранится полная копия требуемых данных для mql5-программы, а дается
прямой доступ к базе данных терминала."
"Поскольку mql5-программа может обратиться к данным
по любому символу и таймфрейму, то есть вероятность, что данные
требуемой таймсерии еще не сформированы в терминале или требуемые
ценовые данные не синхронизированы с торговым сервером."
Хорошо, так как быть, как организовать эту доступность? Если нужно вызывать
CopyRates() другого периода?
Сегодня нет тиков, поэтому если индикатор не рисует, то надо обновить график(меню правой кнопки мыши).
Проблема все там же! Вы переключите тайм фрейм графика не в D1, закройте терминал, потом снова откройте терминал и вуаля окошко под индикатор пустое! А должно быть заполнено! А вы только вывод сообщения об ошибке доступа к истории за комментировали :)
Проблема все там же! Вы переключите тайм фрейм графика не в D1, закройте терминал, потом снова откройте терминал и вуаля окошко под индикатор пустое! А должно быть заполнено! А вы только вывод сообщения об ошибке доступа к истории за комментировали :)
Посмотрите внимательнее :)
Сегодня нет тиков, если есть ошибка в доступе к данным, то прерывается OnCalculate() до следующего тика. Что бы вызвать повторное OnCalculate() - обновите чарт. У меня все работает.
Сегодня нет тиков, если есть ошибка в доступе к данным, то прерывается OnCalculate() до следующего тика. Что бы вызвать повторное OnCalculate() - обновите чарт. У меня все работает.
Вашу мысль понял, по тестю, когда будут тики! Спасибо!
... Тут явно ошибкой терминала пахнет.
Прежде, надо прочитать и видимо не один раз - "Организация доступа к данным".
"Для экономии ресурсов данные по таймфрейму загружаются и хранятся в оперативной памяти только по необходимости, при длительном отсутствии обращений к данным происходит выгрузка их из оперативной памяти с сохранением в файл."
"При доступе к ценовым данным или к значениям индикаторов из 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() - обновите чарт. У меня все работает.