Bars函数用法的问题

 

开始时间d0是:2020.10.26 00:00:00

结束时间dn是:2020.10.26 18:03:06

如下调用Bars函数:

int howmany0 = Bars(DEFAULT_SYMBOL, PERIOD_H1, d0, dn);

int howmanyM5_0 = Bars(DEFAULT_SYMBOL, PERIOD_M5, d0, dn);

结果 howmany0等于18,这个可以理解,18个小时有18个K线

howmanyM5_0等于205,这个就不好理解了。

18个小时一共是18 * 12 = 216个5分钟,那么5分钟的K线应该是216个才对啊。现在返回205,相差11根K线。请问这个是怎么计算的呢?

谢谢。 

 

你测试的时候 dn的时间是未来时间,实际时间还没有到达,实际K线个数就是当下时间到d0之间的K线个数。

 
dn不是未来时间,是当前时间,通过TimeCurrent函数返回的。
 

你发贴的时候(23:16),  在GMT+2的平台上的时间是17:16,那么 dn =   2020.10.26 18:03:06 是个未来的时间。

我验证了Bars()的参数如果是未来的时间,返回的也是实际的K线个数,没有问题。

你再试试,用十字光标拉一下,看看到底是多少个K线。 

要考虑品种的实际开盘时间,比如黄金就不是零点开盘。

 
我的理解是,TimeCurrent返回的是服务器的时间,由于时差就看着像未来的时间。证据是MT4的时间轴上也是这个未来时间,并且实际显示数据的,所以这是时差,不是未来时间。
 
MTUser2015:
我的理解是,TimeCurrent返回的是服务器的时间,由于时差就看着像未来的时间。证据是MT4的时间轴上也是这个未来时间,并且实际显示数据的,所以这是时差,不是未来时间。

我的理解是没给你计算多了,那可能就很正常

或者你去对应的图表上刷新一下试试,在或者下载一下数据

最后的办法,就是……自己数一数

 
MTUser2015:

开始时间d0是:2020.10.26 00:00:00

结束时间dn是:2020.10.26 18:03:06

如下调用Bars函数:

int howmany0 = Bars(DEFAULT_SYMBOL, PERIOD_H1, d0, dn);

int howmanyM5_0 = Bars(DEFAULT_SYMBOL, PERIOD_M5, d0, dn);

结果 howmany0等于18,这个可以理解,18个小时有18个K线

howmanyM5_0等于205,这个就不好理解了。

18个小时一共是18 * 12 = 216个5分钟,那么5分钟的K线应该是216个才对啊。现在返回205,相差11根K线。请问这个是怎么计算的呢?

谢谢。 

我的理解是,Bars是历史数据中的bar数量,如果你的“max bars in chart” 里面设定的不是无限显示,这个函数的结果就有问题。
原因: