У вас же везде идет проверки проверки времени открытия последнего бара, вот его вы и получаете. Сразу после открытия терминала, бар еще не образовался в OnInit.
У вас же везде идет проверки проверки времени открытия последнего бара, вот его вы и получаете. Сразу после открытия терминала, бар еще не образовался в OnInit.
Вопрос! Почему он выдает предыдущие данные после того, как связь с сервером уже установлена, был предзапрос данных в OnInit(), проверка на подгрузку данных в каждой из функций CheckCurren..(). Сколько, блин, проверок нужно сделать, чтобы все нормально отработало...
Символов и периодов много, если терминал был долго в оффлайне, то нужно загрузить много данных. Чтобы не ждать этой загрузки, которая зависит от скорости интернета и сервера брокера, терминал сразу выдает предыдущие данные. Те которые уже есть в наличии.
Поэтому это не "костыльное решение", а необходимая проверка подгрузки последней свечи.
пс. а как вы, в дальнейшем, проверяете появление нового бара?
Символов и периодов много, если терминал был долго в оффлайне, то нужно загрузить много данных. Чтобы не ждать этой загрузки, которая зависит от скорости интернета и сервера брокера, терминал сразу выдает предыдущие данные. Те которые уже есть в наличии.
Поэтому это не "костыльное решение", а необходимая проверка подгрузки последней свечи.
Вы чувствуете проблему логики? Если история еще не загружена, а давай я выдам "что-то" и подожду, пока данные не обновятся. И пофиг, корректные это данные или нет...
Плюс, даже если терминал 5-10 минут в оффлайне - та же ерунда. Даже если в окне данных всего 3 символа - та же ерунда. Все проверки соблюдены - та же ерунда.
Вы понимаете, что советы разработчиков по поводу корректной подгрузки - НЕ РАБОТАЮТ. Это Вам ни о чем не говорит?
Вы чувствуете проблему логики? Если история еще не загружена, а давай я выдам "что-то" и подожду, пока данные не обновятся. И пофиг, корректные это данные или нет...
Эта логика только при первом запуске-открытии символа. Терминал не знает будут ли еще свечи, выдает то что есть.
Эта логика только при первом запуске-открытии символа. Терминал не знает будут ли еще свечи, выдает то что есть.
Потом появляется последняя свеча.
Обновил свое сообщение.
Вот скажите, Вы хотите каждый раз тратить часы работы, чтобы выяснять такие нюансы, или хотите один раз прочитать документацию и все понять? Вы хотите мучиться с "предзагрузками" или просто получать ошибку в случае, если данные еще не обновлены?
пс. а как вы, в дальнейшем, проверяете появление нового бара?
//+------------------------------------------------------------------+//| Проверяем образование нового часа |//+------------------------------------------------------------------+bool CheckNewHour()
{
//--- Сбрасываем код последней ошибкиResetLastError();
//--- Получаем время открытия текущего часаconstdatetime hOpenTime = iTime( _Symbol, PERIOD_H1, 0 );
//--- Проверяем корректность полученного времениif( hOpenTime == 0 || GetLastError() != 0 ) // Если возникла ошибка или время не полученоreturn( false ); // Возвращаем ложь//--- Сравниваем полученное время с сохраненнымif( hOpenTime == _hourOpenTime ) // Если время совпадаетreturn( false ); // Возвращаем ложь//--- Запоминаем время нового часа
_hourOpenTime = hOpenTime;
//--- Возвращаем истинуreturn( true );
}
Не вижу проблемы, появилась новая свеча - делаем перерасчет последней свечи индикатора/советника. Появилось больше одной новой свечи - делаем полный перерасчет индикатора/советника. Это то же самое - появляется новая свеча.
Еще - нужные периоды нужно постоянно "дёргать" чтобы они обновлялись. Если на символе-периоде никто не работает, (не проверяются котировки, не запущен индикатор), то он "засыпает" потому как считается ненужным.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Какого закрытия? Мне нужно время открытия...
У вас же везде идет проверки проверки времени открытия последнего бара, вот его вы и получаете. Сразу после открытия терминала, бар еще не образовался в OnInit.
У вас же везде идет проверки проверки времени открытия последнего бара, вот его вы и получаете. Сразу после открытия терминала, бар еще не образовался в OnInit.
...без комментариев, с Вами я разговор закончил.
Вопрос! Почему он выдает предыдущие данные после того, как связь с сервером уже установлена, был предзапрос данных в OnInit(), проверка на подгрузку данных в каждой из функций CheckCurren..(). Сколько, блин, проверок нужно сделать, чтобы все нормально отработало...
Символов и периодов много, если терминал был долго в оффлайне, то нужно загрузить много данных.
Чтобы не ждать этой загрузки, которая зависит от скорости интернета и сервера брокера, терминал сразу выдает предыдущие данные.
Те которые уже есть в наличии.
Поэтому это не "костыльное решение", а необходимая проверка подгрузки последней свечи.
пс. а как вы, в дальнейшем, проверяете появление нового бара?
Символов и периодов много, если терминал был долго в оффлайне, то нужно загрузить много данных.
Чтобы не ждать этой загрузки, которая зависит от скорости интернета и сервера брокера, терминал сразу выдает предыдущие данные.
Те которые уже есть в наличии.
Поэтому это не "костыльное решение", а необходимая проверка подгрузки последней свечи.
Вы чувствуете проблему логики? Если история еще не загружена, а давай я выдам "что-то" и подожду, пока данные не обновятся. И пофиг, корректные это данные или нет...
Плюс, даже если терминал 5-10 минут в оффлайне - та же ерунда. Даже если в окне данных всего 3 символа - та же ерунда. Все проверки соблюдены - та же ерунда.
Вы понимаете, что советы разработчиков по поводу корректной подгрузки - НЕ РАБОТАЮТ. Это Вам ни о чем не говорит?
Вы чувствуете проблему логики? Если история еще не загружена, а давай я выдам "что-то" и подожду, пока данные не обновятся. И пофиг, корректные это данные или нет...
Эта логика только при первом запуске-открытии символа.
Терминал не знает будут ли еще свечи, выдает то что есть.
Потом появляется последняя свеча.
Эта логика только при первом запуске-открытии символа.
Терминал не знает будут ли еще свечи, выдает то что есть.
Потом появляется последняя свеча.
Обновил свое сообщение.
Вот скажите, Вы хотите каждый раз тратить часы работы, чтобы выяснять такие нюансы, или хотите один раз прочитать документацию и все понять? Вы хотите мучиться с "предзагрузками" или просто получать ошибку в случае, если данные еще не обновлены?
У Вас, кстати, какая версия терминала?
пс. а как вы, в дальнейшем, проверяете появление нового бара?
Не вижу проблемы, появилась новая свеча - делаем перерасчет последней свечи индикатора/советника.
Появилось больше одной новой свечи - делаем полный перерасчет индикатора/советника.
Это то же самое - появляется новая свеча.
Еще - нужные периоды нужно постоянно "дёргать" чтобы они обновлялись.
Если на символе-периоде никто не работает, (не проверяются котировки, не запущен индикатор), то он "засыпает" потому как считается ненужным.