Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 667

 
Leo59:
Да, для Форекса это годится, потому что тики приходят часто. А если не для Форекса ?
Суть в том, что при инициализации время переменной "starttime" будет больше на несколько секунд, чем время сервера. То есть, когда придут тики на открытии рынка, то TimeCurrent будет всегда больше, чем starttime, и тики уже не важны - условие выполнилось и будет выполняться до следующей переинициализации, например переключении таймфрейма, или перезагрузки терминала.
 
Vitaly Muzichenko:
Суть в том, что при инициализации время переменной "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()  Решений много, но выбор за вами под индивидуальную задачу.

 
Vitaly Muzichenko:

В зависимости от задачи, можно попробовать использовать связку TimeCurrent()+OnTimer(), ну или TimeCurrent()+TimeGMT()+TimeGMTOffset()

Можно все условия выполнять по таймеру, а торговые по  TimeCurrent()  Решений много, но выбор за вами под индивидуальную задачу.

А как, в моём вопросе, можно применить OnTimer() ?
 
Leo59:
А как, в моём вопросе, можно применить OnTimer() ?
Флаг запрета работы держать до тех пор, пока не будет всё просчитано, например...
 
Artyom Trishkin:
Флаг запрета работы держать до тех пор, пока не будет всё просчитано, например...
Артём, вопрос был о том, как программно определить выходной день не прибегая к TimeLocal(). ))
 
Leo59:
А как, в моём вопросе, можно применить OnTimer() ?

Ну не мне знать, что вы будете считать до открытия рынка)

К примеру так:

// В Init ставим флаг connection=false;

void OnTimer() {
// Обрабатываем информацию независимо от работы рынка в функции DataProcessing
DataProcessing();

if(TimeCurrent()>starttime) { // если рынок работает
   connection=true; // ставим флаг в положение "true"
   ...             // или сразу обрабатываем весь остальной код, в основном - торгвый
  }
}

void DataProcessing() {
// что-то делаем по таймеру
}

if(connection==true) { // или здесь торговые операции и остальной код, чтоб не в таймере
  ...
}


 

 
Vitaly Muzichenko:

Ну не мне знать, что вы будете считать до открытия рынка)


Спасибо Виталий за искренние попытки помочь!!!!
Видимо, вопрос должен "отстояться". Возможно мне придётся поменять логику архитектуры кода. "Утро вечера мудреней"
Ещё раз ОГРОМНОЕ СПАСИБО !!!!