求助:如何获取一个交易品种当天的开始交易时间与结束交易时间?如:标准普尔500指数,有时交易时间是1:00-23:00 有时是1:00-22:59分

 
求助:如何获取一个交易品种当天的开始交易时间与结束交易时间?如:标准普尔500指数,有时交易时间是1:00-23:00 有时是1:00-22:59分
 

参考

bool  SymbolInfoSessionTrade(
   string            name,                // symbol name
   ENUM_DAY_OF_WEEK  day_of_week,         // day of the week
   uint              session_index,       // session index
   datetime&         from,                // session beginning time
   datetime&         to                   // session end time
   );

https://www.mql5.com/en/docs/marketinformation/symbolinfosessiontrade

Documentation on MQL5: Market Info / SymbolInfoSessionTrade
Documentation on MQL5: Market Info / SymbolInfoSessionTrade
  • www.mql5.com
Market Info / SymbolInfoSessionTrade - Reference on algorithmic/automated trading language for MetaTrader 5
 

我试了试,2019年3月13号 收盘时间是:22:59分,但用下面代码获取的是:23:15分;

    MqlDateTime GetEtime ; 

    MqlDateTime TM;

    TimeCurrent(TM);

    SymbolInfoSessionTrade(NULL,ENUM_DAY_OF_WEEK(TM.day_of_week),0,Btime,Etime);  //Etime = 1970.01.01 23:15:00

   

 

该函数返回的from,to 是不包含日期的,只有时,分,你需要自己把日期加上,如果你不加日期就默认是1970.01.01

一般来说只用到当日,确定当下是否在交易时段。

 
Ziheng Zhuang:

该函数返回的from,to 是不包含日期的,只有时,分,你需要自己把日期加上,如果你不加日期就默认是1970.01.01

一般来说只用到当日,确定当下是否在交易时段。

我知道,日期是忽略不计的。关键是时间获取的不对。2019年3月13号 收盘时间是:22:59分,但用下面代码获取的是:23:15分;

 

用代码获取的时段其实就是品种属性中规定的时段,正常情况与实际的交易时段是吻合的,除了节假日休市等特殊的情况会不一致。

如果2019年3月13号是个特殊的交易日,那不吻合是有可能的。
 
Ziheng Zhuang:

用代码获取的时段其实就是品种属性中规定的时段,正常情况与实际的交易时段是吻合的,除了节假日休市等特殊的情况会不一致。

也就是说正常交易日代码获取是正常的,测试中代码就是属性规定的时间。谢谢了!

原因: