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

 
Taras Slobodyanik:

我没有看到问题,一个新的蜡烛 出现--我们在指标/顾问中重新计算最后的蜡烛。
有一个以上的新蜡烛--我们对指标/顾问做一个完整的重新计算。
这也是一样的--一个新的蜡烛出现。

还有一件事--所需的时期应该不断地 "拉 "出来更新。
如果没有人在符号-周期上工作(引号没有检查,指标没有运行),那么它就会 "睡眠",因为它被认为是不需要的。

我们在拉动,我们在拉动。我们提出请求,得到一个错误,然后离开。但在这里,你看,另一个 "特殊性 "出来了--复位后,错误并没有复位。如果是这样,就不会有问题。但返回不正确的数据是问题所在。而且我可以非常清楚地看到它。

在这个例子中,整个错误检查系统都付诸东流。

 

终端如何知道最新的数据已经过期?
因为历史就在那里--它就在那里。
该请求被发送至经纪人...尽快。

出现一个新的柱子--数据被更新。

 
Taras Slobodyanik:

终端如何知道最新的数据已经过期?
毕竟,有一段历史--是有的。
向经纪人发送请求...只要是这样。

出现一个新的柱子--数据被更新。

与服务器的通信已经建立。当请求高级TF数据时,如果数据没有准备好--错误或返回0。如果数据准备好了 - 只返回实际数据。这就是全部。如果数据长时间没有准备好 - 让它返回错误或0。

 
Taras Slobodyanik:

顺便说一句,你没有回答你关于终端版本的问题。

 
Alexey Kozitsyn:

顺便说一下,你没有回答关于终端版本的问题。

终端版本与此有什么关系?新的数据,它在那里或者不在那里。而且如果它们不是来自服务器,任何版本都不会保存它们。
该指标只是在新数据到来之前开始。或者,将检查转移到OnCalculate,当收到新的tick时就会被触发。

 
Konstantin Nikitin:

或者,将检查转移到OnCalculate, 当收到新的tick时就会被触发。

已经有人建议过几次了,管理员也建议过。

在指标中,OnCalculate() 将在指标开始时启动,但第二次OnCalculate()将在tick receipt时启动--这里需要启动定时器并下载新的OHLC数据。

 
Igor Makanu:

他已经被提供了好几次,管理员也是如此。

指标将在指标开始时启动OnCalculate(),但第二次OnCalculate()将在tick接收时启动 - 这里需要启动定时器并下载新的OHLC数据

看一下我上次发表的代码吧。这与定时器无关,一切都已经转移到OnCalculate()中了。终端启动 时仍然不工作。

 
//--- Проверяем связь с сервером
if(firstrun)
{
 firstrun=false;                // первый запуск индикатора
 return(0);
}   
if(!IsConnected())                              // Если не удалось установить связь с сервером
     {
      //--- Сбрасываем флаг соединения с сервером
      _isConnected=false;
      //--- Выходим
      return( 0 );
     }
我还会检查GetTickCount(),为终端加载、生成图形和与服务器建立通信提供时间;你还需要跟踪终端的重启,我不知道如何跟踪,但你需要给出时间
 
Alexey Kozitsyn:

请看我发表的最后一个代码。这不再是关于计时器的问题了,所有的东西都已经被移到了OnCalculate()。启动终端 时仍然不工作。

好吧,跳过启动时的第一关

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   static bool res = false;
   if( !res )
     {
      res = true;
      return( rates_total );
     }
   /* работаем */
   return( rates_total );
  }
 
Konstantin Nikitin:

好吧,跳过启动时的第一遍

阅读 第1点。