![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
... И как узнать посчитан ли n-й бар?
Где посчитан, в индикаторе? Если в индикаторе, то смотрим prev_calculated, но здесь только два варианта: не посчитано ничего (значит считаем для всех баров), и посчитано все (считаем для одного формирующегося бара). Промежуточных вариантов типа не просчитано 2, 3, 5 и т.п. баров нет.
Еще есть функция BarsCalculated(), может пригодиться.
Где посчитан, в индикаторе? Если в индикаторе, то смотрим prev_calculated, но здесь только два варианта: не посчитано ничего (значит считаем для всех баров), и посчитано все (считаем для одного формирующегося бара). Промежуточных вариантов типа не просчитано 2, 3, 5 и т.п. баров нет.
Еще есть функция BarsCalculated(), может пригодиться.
Понятно, спасибо. Вот за последний вариант я и спрашивала. Мала вероятность что он одним разом подгрузит 500 баров*20 валют или даже 50 без ошибок... Точнее попыток будет очень много... И так не быстро работает (загружается первоначально где-то от 10 сек до минуты). Заказчик в печали(
Лучше уж лишний кусок памяти раз такая соль.
Понятно, спасибо. Вот за последний вариант я и спрашивала. Мала вероятность что он одним разом подгрузит 500 баров*20 валют или даже 50 без ошибок... Точнее попыток будет очень много... И так не быстро работает (загружается первоначально где-то от 10 сек до минуты). Заказчик в печали(
Лучше уж лишний кусок памяти раз такая соль.
Да нет. Должно нормально работать. Проблемы могут быть только при запуске, пока другие таймфреймы не обновлены. Потом все нормально должно быть. Нужно на каждом баре хотя бы один раз запрашивать данные, даже если они не нужны.
Еще может интернет слабый?
Проблемы могут быть только при запуске, пока другие таймфреймы не обновлены.
Еще может интернет слабый?
Вот-вот, в том и проблема что таймфреймы не обновлены... Если по другом, то получится что он загружается и показывает фигу. Для использования в сове, он дергает по бару (там нулевой только нужно), думаю должно быть тут норм. Или кто-то не убрал слип... По прежнему делал 100 попыток загрузить из слипом соответственно. Поставила 3 попытки.
Добрый день!
Аналогичную проблему я поднимал здесь:
https://www.mql5.com/ru/forum/42180
MQ исправили ошибку SymbolIsSynchronized(), но если нет долгого обращения к таймсерии, то через
таймер её нужно периодически "дёргать"
Вот код, который нормально (может быть Вам пригодится), но если нет долгого обращения, придётся использовать таймер.
Сначала вызываете GetBars(), а затем СopyClose()
Добрый день!
Аналогичную проблему я поднимал здесь:
https://www.mql5.com/ru/forum/42180
MQ исправили ошибку SymbolIsSynchronized(), но если нет долгого обращения к таймсерии, то через
таймер её нужно периодически "дёргать"
Вот код, который нормально (может быть Вам пригодится), но если нет долгого обращения, придётся использовать таймер.
Сначала вызываете GetBars(), а затем СopyClose()
SymbolIsSynchronized
Проверяет факт синхронизированности данных по указанному символу в терминале с данными на торговом сервере
Но не загружает... И за Bars не указано что инициирует загрузку данных... Но проверю тогда.
Спасибо, правда в справке сказано что
Но не загружает... И за Bars не указано что инициирует загрузку данных... Но проверю тогда.
Да, не загружает, но инициирует загрузку.
( в справке не точно написано )
Чтобы правильно построить таймсерию, символ должен быть синхронизирован, т.е данные в терминале должны
совпадать с данными на сервере.
В справке ничего нет про SymbolIsSynchronized, что она загружает или синхронизирует или еще чего-то.
А вот Bars() - хорошая полезная функция, самая нужная: инициирует построение таймфрейма, загрузку и дожидается синхронизации.
В справке:
Если данные для таймсерии с указанными параметрами при вызове функции Bars() еще не сформированы в терминале, или данные таймсерии в момент вызова функции не синхронизированы с торговым сервером, то функция вернет нулевое значение.
В справке ничего нет про SymbolIsSynchronized, что она загружает или синхронизирует или еще чего-то.
А вот Bars() - хорошая полезная функция, самая нужная: инициирует построение таймфрейма, загрузку и дожидается синхронизации.
В справке:
Хорошее замечание.
Если сначала прверять Bars(), то если всё синхронизировано, то функция GetBars() будет работать быстрее: