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

 
Leo59:
К сожалению, не помогает.

init();
 if(IsTradeAllowed()) Print("Торговля разрешена");
 if(!IsTradeAllowed()) Print("Торговля НЕ разрешена");


Выводит : "Торговля разрешена"

Надо как-то по другому. А вот как ?

Попробуйте так:

starttime=(int)TimeCurrent()+sec; // например +5 секунд. Эту строку в OnInit

if(TimeCurrent()>starttime) {
...
}

Я думаю принцип понятен, и пока нет тика, то TimeCurrent не изменится

 
Vitaly Muzichenko:

Попробуйте так:

starttime=(int)TimeCurrent()+sec; // например +5 секунд

if(TimeCurrent()>starttime) {
...
}

Я думаю принцип понятен, и пока нет тика, то TimeCurrent не изменится

Да, для Форекса это годится, потому что тики приходят часто. А если не для Форекса ?
 
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(). ))
Причина обращения: