市场关闭 - 页 6

 
fxsaber:

看,只有在这些情况下,时间才会有所不同


已经讨论过好几次了,MqlTick 没有原样返回tick。有两个勾选流--报价和交易。而在CopyTicks中,它们的合并有时是追溯性的,因为流是不同步的。而且,MqlTick和CopyTicks的时间可能不一致。


10个SEK.真的有可能不重合吗?

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

10个SEC.可以不匹配吗?

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(),后者取自Market Watch的最后一个已知报价。

做一个函数TimeServer(),它简单地翻译了交换的时间。

那么就不需要TimeTradeServer() 了。

这两个功能就足够了

TimeLocal()和TimeServer()

 
prostotrader:

目前,决定以这种方式进行

让人想起了TC在这个话题中的行为。

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

在图片上的输出是TimeTradeServer()函数,时间运行得更快。
如果你输出TimeCurrent(),它将是当前符号的最新报价的时间,因此也经常出现不一致的情况。
如何从Market Watch中获取最新的报价时间,使其与Market Watch中的时间同步输出?



 
Vasiliy Pushkaryov:

如何从Market Watch中获取最新的报价时间,使其与Market Watch中的时间同步输出?

TimeCurrent

 
fxsaber:

TimeCurrent。

是的,这也不是很好。我使用OnTimer每秒钟输出一次,我决定把信息输出也加入到打印中。我可以看到,同样的时间在那里经过了两次。现在我只在帮助中看到,OnTimer的TimeCurrent是" Market Watch窗口中任何符号的最后报价时间,与本窗口标题中显示的时间相同"。

即这是需要的。在理论上。但在实践中,有些事情是不太对劲的。