Market closed - страница 6

 
fxsaber:

увидите, что время будет различаться только в таких ситуациях


Несколько раз обсуждалось, что MqlTick не возвращает тик, как есть. Что есть два тиковых потока - котировочный и сделки. И что в CopyTicks они объединяются иногда задним числом, т.к. потоки несинхронизированы. И что время MqlTick и CopyTicks могут не совпадать.


Неужели на 10 СЕК. могут не совпадать?

2017.09.22 11:18:38.257 Test_time (RTS-12.17,M1)        CopyTicks time = 11:18:27; SymbolInfoTick = 11:18:37
 
prostotrader:

Неужели на 10 СЕК. могут не совпадать?

На Metaquotes-Demo такого нет.

 
fxsaber:

На Metaquotes-Demo такого нет.


Это Демо открывашки, щас попробую на реале...

Добавлено

Да, не реале повеселее

2017.09.22 11:58:03.892 Test_time (Si-12.17,M1) CopyTicks time = 11:58:03; SymbolInfoTick = 11:58:03
2017.09.22 11:58:03.922 Test_time (Si-12.17,M1) CopyTicks time = 11:58:03; SymbolInfoTick = 11:58:03
2017.09.22 11:58:05.186 Test_time (Si-12.17,M1) CopyTicks time = 11:58:03; SymbolInfoTick = 11:58:04
2017.09.22 11:58:06.110 Test_time (Si-12.17,M1) CopyTicks time = 11:58:03; SymbolInfoTick = 11:58:05
2017.09.22 11:58:06.230 Test_time (Si-12.17,M1) CopyTicks time = 11:58:06; SymbolInfoTick = 11:58:06
2017.09.22 11:58:06.350 Test_time (Si-12.17,M1) CopyTicks time = 11:58:06; SymbolInfoTick = 11:58:06
2017.09.22 11:58:06.430 Test_time (Si-12.17,M1) CopyTicks time = 11:58:06; SymbolInfoTick = 11:58:06
2017.09.22 11:58:06.430 Test_time (Si-12.17,M1) CopyTicks time = 11:58:06; SymbolInfoTick = 11:58:06
2017.09.22 11:58:07.174 Test_time (Si-12.17,M1) CopyTicks time = 11:58:07; SymbolInfoTick = 11:58:07
 
prostotrader:

не реале повеселее

Миллисекунды и другие данные есть.

 

Пока, решил сделать так

//bool CheckMarketTime(const string a_symbol)
bool CheckMarketTime()
{
  sv_time.year = 0;
  TimeTradeServer(sv_time);
  if(sv_time.year > 0)
  {
    if((sv_time.day_of_week == int(FirstDay)) ||                 //первый выходной
       (sv_time.day_of_week == int(SecondDay))) return(false);   //Второй выходной
    sv_time.year = 0;   
    TimeCurrent(sv_time);
    if(sv_time.year > 0)
    {   
      ulong cur_time = sv_time.hour * 3600 + sv_time.min * 60 + sv_time.sec;
      if(((cur_time >= time_st_mon) && (cur_time < 50370)) ||
         ((cur_time >= time_st_day) && (cur_time < 67470)) ||
         ((cur_time >= time_st_evn) && (cur_time < 85770)))
      {
        return(true);
      }
    }
  }
}
 

По хорошему, нужно просто транслировать время сервера (биржи)

вместо TimeCurrent(), которое берётся из последней известной котировке в Обзоре рынка,

сделать функцию TimeServer(), которая просто транслирует время биржи.

Тогда и TimeTradeServer() будет не нужна. 

Будет достаточно двух функций

TimeLocal() и TimeServer()

 
prostotrader:

Пока, решил сделать так

Напомнили поведение ТС в этой ветке.

Перевод string в часы и минуты
Перевод string в часы и минуты
  • 2017.09.06
  • www.mql5.com
Когда встаёт задача задать во входных параметрах время в формате ЧЧ:ММ, приходится решать дилему: удобство пользователя при вводе значений или удоб...
 

На картинке вывод на графике - это функция TimeTradeServer(), время бежит быстрее.
Если выводить TimeCurrent(), то будет время последней котировки по текущему символу и поэтому тоже часто несоответствие.
Как можно получить последнее время самой последней котировки из "Обзора рынка", чтобы выводить время синхронно со временем в "Обзоре рынка"?



 
Vasiliy Pushkaryov:

Как можно получить последнее время самой последней котировки из "Обзора рынка", чтобы выводить время синхронно со временем в "Обзоре рынка"?

TimeCurrent.

 
fxsaber:

TimeCurrent.

Да, как-то тоже не очень. Я через OnTimer вывод делаю раз в секунду, решил в принт еще вывод сообщения добавить. Видно, что там дважды одно и тоже время проходит. Сейчас в справке только увидел, что TimeCurrent для OnTimer - " время прихода последней котировки по любому символу, доступного в окне "Обзор рынка", то самое время, которое показано в заголовке этого окна."

Т.е. это то что нужно. В теории. Но на практике, что-то не то выходит.



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