Недоразумение по: TimeCurrent(), Hour(), TimeLocal()

 

TimeCurrent() - Возвращает последнее известное время сервера. Значение времени формируется на торговом сервере и не зависит от настроек времени на компьютере пользователя.

‌Hour() - Возвращает текущий час последнего известного серверного времени на момент старта программы.

TimeLocal()Возвращает локальное время компьютера, на котором запущен клиентский терминал.

Вопрос:
П‌очему если в коде стоит ограничение по времени для старта торговли: ‌Hour() >=16 и в данный момент серверное время = 15, а локальное время по МСК = 16 советник начинает торговать ??
П‌олучается что Hour()  локальное время а не серверное ??
Советник в тестере использует серверное время и параметры подбираются с учётом серверного времени,
если в реальной торговле Hour() будет использовать локальное время, то все параметры зависевшие от времени торговли будут не актуальны.

В‌озможный вариант использования именно серверного времени  для реальной торговли:

void start() {

   int Hours=(int)HourStr(TimeCurrent());
   if (Hours >= 16) OrderSend(Symbol(),-,-,-,-,-,-,-)
   }
//=== StartEND ===//

//+----------------------------------------------------+ 
//|  Преобразование типа datetime в строку формата HH  | 
//+----------------------------------------------------+ 
string HourStr(datetime ht) { 
  string hh=""; 
  if (TimeHour(ht)<10) hh="0"+(string)TimeHour(ht); else hh=(string)TimeHour(ht); 
  return(hh); 
} 
 
Natalya Dzerzhinskaya:

TimeCurrent() - Возвращает последнее известное время сервера. Значение времени формируется на торговом сервере и не зависит от настроек времени на компьютере пользователя.

‌Hour() - Возвращает текущий час последнего известного серверного времени на момент старта программы.

TimeLocal()Возвращает локальное время компьютера, на котором запущен клиентский терминал.

Вопрос:
П‌очему если в коде стоит ограничение по времени для старта торговли: ‌Hour() >=16 и в данный момент серверное время = 15, а локальное время по МСК = 16 советник начинает торговать ??
П‌олучается что Hour()  локальное время а не серверное ??
Советник в тестере использует серверное время и параметры подбираются с учётом серверного времени,
если в реальной торговле Hour() будет использовать локальное время, то все параметры зависевшие от времени торговли будут не актуальны.

В‌озможный вариант использования именно серверного времени  для реальной торговли:

А при чём тут собственная функция? Именно она и даёт ошибку. Что может получиться при представлении строки в виде int числа??? Я не проверял, но кажется получится абра-кадабра...
 
Alexey Viktorov:
А при чём тут собственная функция? Именно она и даёт ошибку. Что может получиться при представлении строки в виде int числа??? Я не проверял, но кажется получится абра-кадабра...


Упс, моя ошибка.
В‌ремя завершения торговли не обозначено было и значение предыдущего старта с 12-ти  разрешило торговлю.
Вопрос снят !! 

P.S. надо бы удалить эту тему, а то начинающие трейдеры начнут путаться.

Причина обращения: