FORTS 请帮助 - 页 8

 
MigVRN:

一直以来都是如此。

他是一个不工作的定时专家。还有聊天记录上的其他内容。计时器和自定义事件 真的没有检查。

也来自帮助

...HCC格式的服务文件作为数据来源,为所要求的 时间范围建立HC格式的价格数据。HC格式的数据是时间序列,它为快速访问做了最大的准备。它们只在图表或mql5程序的要求下创建,数量不超过 "图表中的最大条数 "参数,并被保存在扩展名为hc的文件中供进一步使用。

为了节省资源,时间框架上的数据只有在需要时才会被加载并存储在RAM中。 如果长时间没有请求,数据就会从RAM中卸载,并保存到一个文件中。每个时间段的数据都是独立于其他时间段的现成数据 准备的。数据准备和可用性的规则对所有的时间框架都是一样的。因此,尽管HCC格式的数据存储单位是分钟条,但HCC格式的数据的可用性并不意味着HC格式中相同数量的M1时间框架数据的可用性和可及性。

:)

那么,谁会把它们加载到内存中呢,如果不是SeriesInfoInteger(symbol,PERIOD_M1,SERIES_TERMINAL_FIRSTDATE,first_ date)

没有其他功能!!!!

当数据在终端????,为什么要去服务器?

 
Mikalas:

:)

那么,谁会把它们加载到内存中呢,如果不是SeriesInfoInteger(symbol,PERIOD_M1,SERIES_TERMINAL_FIRSTDATE,first_ date)

没有其他功能!!!!

当数据在终端????,为什么要去服务器?

这是正确的--它加载了 那里的东西。但是,由于指标中的任何延迟都会减慢与所有挂在它上面的聊天速度--在指标中,我们这样做,如果系列在调用的时刻还没有准备好--函数将返回错误并进行数据准备。一段时间后,它将不再返回一个错误。这就是你的日志中所发生的情况。
 
MigVRN:
因为这是第一次涉及这个特定系列。

我做了这个循环。

long first_date = 0;
    datetime times[1];
    int fail_cnt = 0;
//---
    while ( fail_cnt < 1000 )
    {
      ResetLastError();  
      if ( SeriesInfoInteger( symbol, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date ) )
      {
        if ( first_date > 0 )
        {
//--- force timeseries build
          CopyTime( symbol, period, datetime( first_date ) + PeriodSeconds( period ), 1, times );
//--- check date
          if ( SeriesInfoInteger( symbol, period, SERIES_FIRSTDATE, first_date ) )
//---        
          if ( first_date > 0 && first_date <= long( start_date ) )
          {
            return( Bars( symbol, period, start_date, end_date ) );
          } 
        }
      }
      fail_cnt++;
    }

猜猜看,结果是什么?

 
MigVRN:
好了--它加载 并准备好了那里的东西。但由于指标中的任何延迟都会使聊天速度减慢,所有的东西都挂在上面--在指标中,我们做了这样的安排:如果系列在调用时没有准备好--函数将返回错误并进行数据准备。一段时间后,它将不再返回一个错误这就是你的日志中的内容。
这个时间可能需要几次OnCalculate()调用,甚至几秒钟。这就是赚钱机器的运作方式。这就是为什么在OnInit()上调用任何与从指标获取数据有关的东西都是不正确的。
 
Mikalas:

我做了这个循环。

猜猜看,结果是什么?

barabashkakvn:
这个时间可能需要多次调用OnCalculate(),甚至几秒钟。这就是赚钱机器的运作方式。这就是为什么从指标的OnInit()调用任何与获取数据有关的东西都是错误的。

这就对了--周期非常快。没有时间准备......我明白,从开发者(我们)的角度来看,这是地狱 :)但你将不得不习惯于此。

顺便说一下,Sleep()在指标中不起作用。

:)

 
MigVRN:

这是正确的 - 周期非常快。没有时间准备...我明白,从开发者(我们)的角度来看,这是地狱 :)但你必须习惯于它...

顺便说一下,Sleep()在指标中不起作用。

:)

谢谢你,Andrey!

这个问题不是给你的,是反问句。

为什么我需要

SeriesInfoInteger( symbol, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date ) ????

如果我没有得到答案,我必须与服务器联系(终端中可能真的没有任何数据) !

谢谢大家。楚河汉界得到了它....

...并对MQ表示 "尊重" !

P/S 我不会再看帮助了......

 
Mikalas:

康帕斯特!

当你不理解或误解某件事情时,没有人称你为楚克奇人。

他们为什么要这样做?

当我不明白的时候,我试着去听别人说的话。

而你却顽固地忽视了许多人的经验,他们也曾面临类似的问题并解决了它。

这就是我所说的 "Chukcha作家"。

 
Mikalas:

那么,什么是

SeriesInfoInteger( symbol, PERIOD_M1, SERIES_TERMINAL_FIRSTDATE, first_date ) ????

如果我没有得到答案,我就得去找服务器(终端的数据可能真的不在那里) !

如果数据准备好了,就去获取数据;如果请求是第一次发生,就去启动准备。
 
MigVRN:

这就对了--周期非常快。没有时间准备......我明白,从开发者(我们)的角度来看,这是地狱 :)但你必须习惯于它...

顺便说一下,Sleep()在指标中不起作用。

:)

顺便说一下,是什么阻止了开发人员使用SERIES_TERMINAL_FIRSTDATE

返回。

-1 - 无数据

0 - 没有数据,但尚未准备好

> 0 - 日期本身

 
Mikalas:

顺便说一下,开发人员是否阻止了SERIES_TERMINAL_FIRSTDATE 标识符的使用?

返回。

-1 - 无数据

0 - 没有数据,但尚未准备好

> 0 - 日期本身。

而对于程序(和程序员)来说,"无法使用 "和 "未准备好 "之间有什么区别?

如果数据没有准备好,就会有一个错误。

或者,也许这些信息也不是即时可用的,这就是为什么不显示的原因。