int bars=Bars(_Symbol,_Period);
if(bars>0)
{
Print("Количество баров в истории терминала по символу-периоду на данный момент = ",bars);
}
else//нет доступных баров
{
///
}
Dennis Kirichenko: Кагбэ правила хорошего тона подразумевают синхронизацию данных...
Привет, Денис!
Или не умею читать, или Вы не ХОТИТЕ это делать!
Функция вернула бы "0", если бы данные не были синхронизированы!
Примечание
Если данные для таймсерии с указанными параметрами при вызове функции Bars() еще не сформированы в терминале,
или данные таймсерии в момент вызова функции не синхронизированы с торговым сервером, то функция вернет нулевое значение.
А если запустить только ту часть, что должна вызываться при ошибке?
//--- видимо, данные по символу не синхронизированы с данными на сервере bool synchronized=false;
//--- счетчик цикла int attempts=0;
// сделаем 5 попыток дождаться синхронизации while(attempts<5)
{
if(SeriesInfoInteger(Symbol(),0,SERIES_SYNCHRONIZED))
{
//--- есть синхронизация, выходим
synchronized=true;
break;
}
//--- увеличим счетчик
attempts++;
//--- подождем 10 миллисекунд до следующей итерации Sleep(10);
}
//--- вышли из цикла по факту синхронизации if(synchronized)
{
Print("Количество баров в истории терминала по символу-периоду на данный момент = ",bars);
Print("Самая первая в истории терминала дата по символу-периоду на данный момент = ",
(datetime)SeriesInfoInteger(Symbol(),0,SERIES_FIRSTDATE));
Print("Самая первая дата в истории по символу на сервере = ",
(datetime)SeriesInfoInteger(Symbol(),0,SERIES_SERVER_FIRSTDATE));
}
//--- синхронизация данных так и не была достигнута else
{
Print("Не удалось получить количество баров на ",_Symbol);
}
Михаил:
Дело может быть в том, что символ "SILV-3.16" есть в Обзоре рынка, а его график НЕ открыт.
Возможно, именно поэтому функция возвращает не все бары.
Конечно, дело в этом. Я и спросил, с какого графика производился вызов.
При запросе данных других инструментов и ТФ нужно самому заботиться о их актуальности (разработчики решили этого не делать штатно).
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
У меня возвращается 5 баров, а на графике их гораздо больше...
На каком инструменте/ТФ вызывается код?
Что показывает в этом же случае код из справки?
На каком инструменте/ТФ вызывается код?
Что показывает в этом же случае код из справки?
Привет, Андрей!
А что может показать код из справки?
те же 5 баров:
Дело может быть в том, что символ "SILV-3.16" есть в Обзоре рынка, а его график НЕ открыт.
Возможно, именно поэтому функция возвращает не все бары.
Кагбэ правила хорошего тона подразумевают синхронизацию данных...
Привет, Денис!
Или не умею читать, или Вы не ХОТИТЕ это делать!
Функция вернула бы "0", если бы данные не были синхронизированы!
Примечание Если данные для таймсерии с указанными параметрами при вызове функции Bars() еще не сформированы в терминале, или данные таймсерии в момент вызова функции не синхронизированы с торговым сервером, то функция вернет нулевое значение.Привет, Андрей!
А что может показать код из справки?
те же 5 баров:
А если запустить только ту часть, что должна вызываться при ошибке?
Дело может быть в том, что символ "SILV-3.16" есть в Обзоре рынка, а его график НЕ открыт.
Возможно, именно поэтому функция возвращает не все бары.
Конечно, дело в этом. Я и спросил, с какого графика производился вызов.
При запросе данных других инструментов и ТФ нужно самому заботиться о их актуальности (разработчики решили этого не делать штатно).
Привет, Денис!
Или не умею читать, или Вы не ХОТИТЕ это делать!
Функция вернула бы "0", если бы данные не были синхронизированы!
Да, написано, что 0. Я тоже удивился.
Вот это стоит в СД написать.
Самое прикольное, в том, что когда я нахожу ошибку, то она НИ У КОГО не воспроизводится! :)
И требуется как минимум полгода для её обнаружения :):):)
Да, написано, что 0. Я тоже удивился.
Вот это стоит в СД написать.
Андрей, да я уже не вылезаю из СД :)
Они мне ответили "Обратитесь к брокеру" :)
Если минут 10-15 в дебагере "долбить" синхронизацию и наличие первых дат,
то начинает возвращать правильно.
Но, при правильной работе, Bars(_Symbol,_Period) должна возвращать
или ВСЕ бары или "0", если данных нет или они не синхронизированы.