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

 
Alexey Kozitsyn:

阅读 第1点。

要获得条形图的开盘时间,计时器根本没有用,任何其他数据,如果不是来自与图表不同的另一个符号。如果它与不同于当前图表的符号无关,而是与当前符号的另一个TF有关,那么它就很有趣。在新数据到达之前,它不会更新。但你所有的工作都是基于当前的符号。所以不要再去管那个计时器了。其余的就这样被咀嚼了几遍。这个话题绕了一个圈子。

 
Konstantin Nikitin:

要获得条形图的开盘时间,计时器根本没有用,任何其他数据,如果不是来自与图表不同的另一个符号。如果它与当前图表中不同的符号无关,而是与当前符号的另一个TF有关,那么每隔一毫秒检查一次就很有意思。在新数据到达之前,它不会更新。但你所有的工作都是基于当前的符号。所以不要再去管那个计时器了。其余的就这样被咀嚼了几遍。这个话题已经绕了一圈。

伙计,你显然不明白这里发生了什么。这不再是关于定时器的问题了,算了吧。计时器指的是我真正的问题。现在的问题是正在接收的数据中的错误。我建议你阅读的第1点说,在存在IsConnected()的情况下,指标只在第二个事件OnCalculate() 中连接到服务器。所以你之前的建议是没有用的。

 
Alexey Kozitsyn:

伙计,你显然不明白这里发生了什么。这不再是关于定时器的问题了,算了吧。计时器指的是我真正的问题。现在的问题是正在接收的数据中的错误。我建议你阅读的第1点说,在存在IsConnected()的情况下,指标只在第二个事件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 int num = 1;
   
     
     if( IsConnected() )
          if( num == 1 )
               Comment( "Test: ", num );
     num++;
     return(rates_total);
}

而你看到的是什么?

在第一遍中,如果有一个与服务器的连接,一切都会正常。

 
Konstantin Nikitin:

你是否对它进行了经验性的测试?我建议你这样做。因此,用测试重新启动终端。

而你看到的是什么?

在第一遍中,如果有一个与服务器的连接,一切都会正常。

在市场不景气的情况下,谁会有正确的思维和想法去测试?

是的,我已经根据经验进行了测试,这就是我写的 内容。

 
Alexey Kozitsyn:

在市场不景气的情况下,谁会有正确的思维和想法去测试?

是的,我通过实验测试了它,这就是我写的

这与市场是否有效没有关系。该指标已经运行,其分析已经开始。第一遍的结果在评论中。你说

阿列克谢-科齐岑

你应该读一读 - 这是关于如果IsConnected()存在,指标将在第二个 事件OnCalculate()中才连接到服务器的事实。所以你之前的建议是没有用的。

 
Konstantin Nikitin:

这与市场是否有效有什么关系?指标已经开始,分析正在进行。第一遍的结果在评论中。你说。

是的。好的。现在,关闭图表上安装了该指标的终端,并再次运行它。

 
Alexey Kozitsyn:

呀。好的,那么。现在,关闭安装有你的这个指标的终端机,并再次启动它。

所以这个图表

是在首次发表前几分钟做出的。就是说,今天。而且是在重新启动终端之后。
与服务器的连接也是在周末建立的。同样的余额检查,可以得到最新的数据,如果它在会话关闭前断开了连接。

 
Konstantin Nikitin:

所以这个图形

而这是在首次发表前几分钟做的。就是说,今天。而且是在终端重新启动之后。
与服务器的连接也是在周末建立的。同样的余额检查,可以得到最新的数据,如果它在会话关闭前断开了连接。

#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   if( !IsConnected() )
     {
        Print( __FUNCTION__,": IsConnected = false" );
        return( 0 );
     }
   //---
   Print( "Connected!" );
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

我得到了一个结果。

2018.10.06 18:24:32.261 test_isConnected GBPUSD,M1: initialized
2018.10.06 18:24:32.313 test_isConnected GBPUSD,M1: OnCalculate: IsConnected = false
2018.10.06 18:24:33.080 test_isConnected GBPUSD,M1: Connected!
而且你的代码在加载时没有显示任何注释。
 
Alexey Kozitsyn:

我得到一个结果。

而且你的代码在加载时并没有显示任何注释。

嗯,这是有可能的。我的服务器有时会在周日停机维护,但时间不长。这可能是没有联系的原因之一。
这可能是另一个原因,即终端在指标启动前无法连接到服务器。
我的终端立即连接起来。

 
Konstantin Nikitin:

这很可能是。我的服务器在周日可能会停机维护,但不会停机很久。这可能是缺乏联系的原因之一。
这可能是终端在指标开始前没有时间连接到服务器的另一个原因。
我的终端立即连接起来。

那就简单点:现在就把我的指标 和你的编辑一起加载 到图表上。关掉终端。星期一再打开它,看看结果如何。进一步讨论是没有用的。