[SERVICE DESK]在获取计时器中的高级TF的时间时出错! - 页 10

 
Alexey Kozitsyn:

自己试试吧。启动指示器,关闭终端,在新的一小时到来时再打开。

因此,如果你得到TimeCurrent

返回最后已知的服务器时间,即在Market Watch中选择的一个符号的最后报价的到达时间。

这一点是正确的。
 
Konstantin Nikitin:

因此,如果你得到TimeCurrent

返回最后的已知服务器时间,即在Market Watch中选择的一个符号的最后报价的到达时间。

这就对了。

你能告诉我这段 代码中的TimeCurrent调用在哪里吗?

 
Alexey Kozitsyn:

你能告诉我在这段 代码中哪里调用了TimeCurrent吗?

因此,酒吧的开放时间仍与终端关闭前相同。形成一个新的条形图,时间也被更新。问题是什么。

 
Konstantin Nikitin:

酒吧开放的时间与我们在航站楼关闭前收到的时间相同。形成一个新的条形图,时间也被更新。问题是什么。

这就是问题所在,当图表上最后一个小时条的时间为22:00时,终端就会关闭。例如,它是在22:45关闭的。在23:01开启--在与服务器建立连接后的最后一个小时的时间请求,在没有任何定时器的情况下对OnInit()进行预请求--仍然是22小时。这很正常,你认为呢?

 

检查蜡烛的时间,而不是条形图的计算。
这样才能正确更新(检查)。

//--- Проверяем первый запуск индикатора
   if(prev_calculated<=0 || 
      _weekOpenTime!=iTime(_Symbol,PERIOD_W1,0)+SEC_PER_DAY ||
      _dayOpenTime!=iTime(_Symbol,PERIOD_D1,0) ||
      _hourOpenTime!=iTime(_Symbol,PERIOD_H1,0) )
     {
     
      _weekOpenTime= 0;
      _dayOpenTime = 0;
      _hourOpenTime= 0;
        
      //--- Проверяем, записано ли время открытия текущей недели
      if(!CheckCurrentWeekOpenTime())                              // Если время не записано
         return(0);                                                // Выходим
      //--- Проверяем, записано ли время открытия текущего дня
      if(!CheckCurrentDayOpenTime())                              // Если время не записано
         return(0);                                                // Выходим
      //--- Проверяем, записано ли время открытия текущего часа
      if(!CheckCurrentHourOpenTime())                              // Если время не записано
         return(0);                                                // Выходим
      //--- Устанавливаем флаг соединения с сервером для запуска таймера
      _isConnected=true;
      //---
      Print(__FUNCTION__,": Данные старших ТФ загружены!");
     }
 
按照我的理解,终端,第一次给出它在历史上的最后一个数据,然后从服务器下载。
 
Taras Slobodyanik:

检查蜡烛图的时间,而不是条形图的计算。
这样才会正确地更新(检查)。

我们谈论的是什么样的酒吧计算?

我会检查你的变体,但实际上你只是在OnCalculate()中添加了一个 "空闲 "数据请求,仅此而已。 而且根据逻辑,它甚至不会到达 "空闲 "请求,因为prev_calculated <= 0已经被执行,第一个运行块将被执行。

总之,这是一个拐杖,语言中一定没有这种情况。连接建立后,检查数据采集的功能是否有误,以及所获数据的正确性。但最后我们得到了什么?数据仍然是错误的。

实际上,如果我们想确定,我们可以简单地在inite中请求当前时间,然后在OnCalculate()中请求当前时间,然后比较它们,直到它们不同。但这是同一个拐杖,不应该是这样的。

 
Alexey Kozitsyn:

问题就在这里,当图表上的最后一个小时条在22:00时,终端就会关闭。例如,它是在22:45关闭的。在23:01开启--在与服务器建立连接后的最后一个小时的时间请求,在没有任何定时器的情况下对OnInit()进行预请求--仍然是22小时。按照你的说法,这是否正常?

从你的问题来看,这似乎是你所需要的。

 
Taras Slobodyanik:
按照我的理解,终端第一次输出它在历史上的最后一个数据,然后从服务器上加载。

问题!为什么它在与服务器的连接已经建立之后才给出以前的数据,在OnInit()中有一个数据的预查询,在每个CheckCurren...()函数中有一个数据加载的检查。我需要做多少次该死的检查才能使一切正常工作......。

 
Konstantin Nikitin:

任何最后一个条形图的关闭时间将是TimeCurrent,根据你的问题,这似乎是你所需要的。

什么时间关门?我需要一个开放的时间...