在不同货币对 使用iBarShift 这个函数遇到的困惑问题

 

 int year = TimeYear(TimeCurrent());

   int month = TimeMonth(TimeCurrent());

   int day = TimeDay(TimeCurrent());

   string s = (string)year + "." +(string)month + "."+(string)day + " " + (string)00+":00";

   datetime firstBarTm = StringToTime(s);

   int firstBarNum = iBarShift(NULL,0,firstBarTm); 

以上代码, 在XAUUSD 1小时图里, 如果00点的时候 , firstBarNum 的值 是1, 但是 在EURUSD这个货币对 1小时图里 ,  如果00点的时候 , firstBarNum 的值 是0 , 这是为什么 ? 谁知道 ?

 

因为你的平台的黄金开盘时间是1点而不是0点,当你把时间“2022-02-21 00:00”作为iBarShift参数时,它默认会找该时间对应的那个K线,如果没用找到就找其左边的那个,因此你得到的结果是1。

 
Ziheng Zhuang #:

因为你的平台的黄金开盘时间是1点而不是0点,当你把时间“2022-02-21 00:00”作为iBarShift参数时,它默认会找该时间对应的那个K线,如果没用找到就找其左边的那个,因此你得到的结果是1。

是的 ,多谢。也是刚发现从1点开始的。