Никакой ручной инициализации не нужно. Ренат Вам уже дважды в этой ветке писал как нужно поступать.
Если история полностью синхронизирована с сервером, то данные получите на первом же тике. Если нет, то на первом тике будет инициализирована подкачка истории. На одном из последующих тиков синхронизация исторических данных с сервером произойдет и получите нужные данные. Попробуйте это в понедельник, когда будут тики, и сами убедитесь.
Я бы в данном случае поступил так:
intOnCalculate(constint rates_total,
constint prev_calculated,
constint begin,
constdouble &price[])
{
//--- получаем данныеdouble Arr[1];
if(CopyClose(symbol,timeframe,index,1, Arr)<1) return(prev_calculated);
... остальной код ...
//--- return value of prev_calculated for next callreturn(rates_total);
}
Иначе если это не старт а дисконект то будут сброшены уже расcчитанные данные так как на следующем выхове в prev_calculated будет то что вернул return
От CopyTime 0 не дождался, дергает историю без всяких дополнительных синхронизаций.
Но. Если на текущем ТФ время редко до 2 сек доходит (первый запуск, потом на раз выдергивает), то на другом символе (любой символ вместо AUDNZD вписываем и смотрим) время достигало 14 сек. Загадывать такой запас слипом, чтобы дожидаться искусственной синхронизации... ну хз.
Все символы не проверял, и насколько будет быстрее, если открыть/закрыть чарт, тоже.
Однако, Urain прав - надо делать приблуду подготовки терминала.
Upd только если все символы дёрнуть по всем тф, боюсь, оперативки то и не хватит )
А что это за неизвестные символы такие? В смысле те, которые были открыты в первый раз, данных ещё не было на диске и их пришлось закачивать с сервера? Время ожидания тогда в этом случае зависит от того, сколько данных было запрошено.
tol64: А что это за неизвестные символы такие? В смысле те, которые были открыты в первый раз, данных ещё не было на диске и их пришлось закачивать с сервера? Время ожидания тогда в этом случае зависит от того, сколько данных было запрошено.
Да только открытые, на стандартных скриптик работает фактически в нулях, но у меня в индикаторе так не происходит, несмотря на то, что после успешного выполнения проходит цикл расчетов больше 0 секунд точно, поэтому после успешного выполнения нужно опять проверять данные и в случае неудачи опять прекращать выполнение программы).
Никакой ручной инициализации не нужно. Ренат Вам уже дважды в этой ветке писал как нужно поступать.
Если история полностью синхронизирована с сервером, то данные получите на первом же тике. Если нет, то на первом тике будет инициализирована подкачка истории. На одном из последующих тиков синхронизация исторических данных с сервером произойдет и получите нужные данные. Попробуйте это в понедельник, когда будут тики, и сами убедитесь.
Я бы в данном случае поступил так:
Иначе если это не старт а дисконект то будут сброшены уже расcчитанные данные так как на следующем выхове в prev_calculated будет то что вернул return
Я бы в данном случае поступил так:
Иначе если это не старт а дисконект то будут сброшены уже расcчитанные данные так как на следующем выхове в prev_calculated будет то что вернул return
Разумно.
Ато!!!, мы на ней собаку съели если повар нам не врёт :о)
Накатал такой скриптик
От CopyTime 0 не дождался, дергает историю без всяких дополнительных синхронизаций.
Но. Если на текущем ТФ время редко до 2 сек доходит (первый запуск, потом на раз выдергивает), то на другом символе (любой символ вместо AUDNZD вписываем и смотрим) время достигало 14 сек. Загадывать такой запас слипом, чтобы дожидаться искусственной синхронизации... ну хз.
Все символы не проверял, и насколько будет быстрее, если открыть/закрыть чарт, тоже.
Однако, Urain прав - надо делать приблуду подготовки терминала.
Upd только если все символы дёрнуть по всем тф, боюсь, оперативки то и не хватит )
На неизвестных символах до 20 секунд ждем.
На неизвестных символах до 20 секунд ждем.
А что это за неизвестные символы такие? В смысле те, которые были открыты в первый раз, данных ещё не было на диске и их пришлось закачивать с сервера? Время ожидания тогда в этом случае зависит от того, сколько данных было запрошено.
Да вроде в мануале все подробно расписано https://www.mql5.com/ru/docs/series/timeseries_access
Правда одной строчкой не обойтись.