Leo59: Да, для Форекса это годится, потому что тики приходят часто. А если не для Форекса ?
Суть в том, что при инициализации время переменной "starttime" будет больше на несколько секунд, чем время сервера. То есть, когда придут тики на открытии рынка, тоTimeCurrent будет всегда больше, чем starttime, и тики уже не важны - условие выполнилось и будет выполняться до следующей переинициализации, например переключении таймфрейма, или перезагрузки терминала.
Leo59: Это не так. Проверьте прямо сейчас, если не влом)). Но, дело не в этом. Мне нужно сейчас, до прихода первого тика обработать информацию так, чтобы с приходом нового(первого) тика всё уже было готово к работе.
Я этим пользуюсь несколько лет, но мне не нужно ничего обрабатывать, пока нет тиков. Вам нужно другое решение, и по ссылке что дал оно должно быть
Vitaly Muzichenko: Я этим пользуюсь несколько лет, но мне не нужно ничего обрабатывать, пока нет тиков. Вам нужно другое решение, и по ссылке что дал оно должно быть
Вы, правы, " starttime=(int)TimeCurrent()+sec; // например +5 секунд", естественно больше TimeCurrent(). Это я погорячился, мозг уже видать расплавился совсем )) По ссылке там только TimeLocal(), а этого хотелось избежать.
Leo59: Вы, правы, " starttime=(int)TimeCurrent()+sec; // например +5 секунд", естественно больше TimeCurrent(). Это я погорячился, мозг уже видать расплавился совсем )) По ссылке там только TimeLocal(), а этого хотелось избежать.
В зависимости от задачи, можно попробовать использовать связку TimeCurrent()+OnTimer(), ну или TimeCurrent()+TimeGMT()+TimeGMTOffset()
Можно все условия выполнять по таймеру, а торговые по TimeCurrent() Решений много, но выбор за вами под индивидуальную задачу.
Leo59: А как, в моём вопросе, можно применить OnTimer() ?
Ну не мне знать, что вы будете считать до открытия рынка)
К примеру так:
// В Init ставим флаг connection=false;
voidOnTimer() { // Обрабатываем информацию независимо от работы рынка в функции DataProcessing DataProcessing();
if(TimeCurrent()>starttime) { // если рынок работает connection=true; // ставим флаг в положение "true" ... // или сразу обрабатываем весь остальной код, в основном - торгвый } }
void DataProcessing() { // что-то делаем по таймеру }
if(connection==true) { // или здесь торговые операции и остальной код, чтоб не в таймере ... }
Ну не мне знать, что вы будете считать до открытия рынка)
Спасибо Виталий за искренние попытки помочь!!!! Видимо, вопрос должен "отстояться". Возможно мне придётся поменять логику архитектуры кода. "Утро вечера мудреней" Ещё раз ОГРОМНОЕ СПАСИБО !!!!
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Да, для Форекса это годится, потому что тики приходят часто. А если не для Форекса ?
Суть в том, что при инициализации время переменной "starttime" будет больше на несколько секунд, чем время сервера.
Это не так. Проверьте прямо сейчас, если не влом)). Но, дело не в этом. Мне нужно сейчас, до прихода первого тика обработать информацию так, чтобы с приходом нового(первого) тика всё уже было готово к работе.
Я этим пользуюсь несколько лет, но мне не нужно ничего обрабатывать, пока нет тиков. Вам нужно другое решение, и по ссылке что дал оно должно быть
По ссылке там только TimeLocal(), а этого хотелось избежать.
Вы, правы, " starttime=(int)TimeCurrent()+sec; // например +5 секунд", естественно больше TimeCurrent(). Это я погорячился, мозг уже видать расплавился совсем ))
По ссылке там только TimeLocal(), а этого хотелось избежать.
В зависимости от задачи, можно попробовать использовать связку TimeCurrent()+OnTimer(), ну или TimeCurrent()+TimeGMT()+TimeGMTOffset()
Можно все условия выполнять по таймеру, а торговые по TimeCurrent() Решений много, но выбор за вами под индивидуальную задачу.
В зависимости от задачи, можно попробовать использовать связку TimeCurrent()+OnTimer(), ну или TimeCurrent()+TimeGMT()+TimeGMTOffset()
Можно все условия выполнять по таймеру, а торговые по TimeCurrent() Решений много, но выбор за вами под индивидуальную задачу.
А как, в моём вопросе, можно применить OnTimer() ?
Флаг запрета работы держать до тех пор, пока не будет всё просчитано, например...
А как, в моём вопросе, можно применить OnTimer() ?
Ну не мне знать, что вы будете считать до открытия рынка)
К примеру так:
void OnTimer() {
// Обрабатываем информацию независимо от работы рынка в функции DataProcessing
DataProcessing();
if(TimeCurrent()>starttime) { // если рынок работает
connection=true; // ставим флаг в положение "true"
... // или сразу обрабатываем весь остальной код, в основном - торгвый
}
}
void DataProcessing() {
// что-то делаем по таймеру
}
if(connection==true) { // или здесь торговые операции и остальной код, чтоб не в таймере
...
}
Ну не мне знать, что вы будете считать до открытия рынка)
Видимо, вопрос должен "отстояться". Возможно мне придётся поменять логику архитектуры кода. "Утро вечера мудреней"
Ещё раз ОГРОМНОЕ СПАСИБО !!!!