请问经济日历函数CalendarValueHistory可以在回测中获取历史的经济数据吗?谢谢

 

如题,我有如下函数,在实时使用时是正常运行的。当前使用,可以获取过去的经济数据,也可以获取未来的经济事件。

但是当我想回测一下的时候,就无法显示历史的经济数据了。

是不是整个经济日历系列函数还不支持回测?

希望大神们能帮忙解答。谢谢。

void PrintEvents(string curr, ENUM_CALENDAR_EVENT_IMPORTANCE importance)

{

   datetime curTime = TimeCurrent();//当前时间

   datetime toDate = curTime + D'1970.1.2';//隔天

   Print("CurrentDate: ",curTime);

   Print("ToDate: ",toDate);

   MqlCalendarEvent event;

   MqlCalendarValue values[];

   CalendarValueHistory(values,curTime,toDate,NULL,curr);

   int count = ArraySize(values);

   Print("counts: ",count);// -->这里在正常使用时,会显示个数,在回测是一直是0. 由于这里是0,下面的for循环就执行不了

   MqlDateTime str1,str2;

   

   ulong eventID;

   datetime eventTime;

   string eventName;

   

   string importanceStr;

   //ArrayPrint(values);


   for(int i = 0; i < count; i++) {

      eventID = values[i].event_id;

      

      if(eventID !=0) 

      {

         CalendarEventById(eventID,event);

         //importance = event.importance;

         if(event.importance == importance)

         {

            if(importance == CALENDAR_IMPORTANCE_HIGH)

               importanceStr = "High";

            if(importance == CALENDAR_IMPORTANCE_MODERATE)

               importanceStr = "Moderate";

            eventName = event.name;

            eventTime = values[i].time;  

    

               Print("Event ID: ", eventID, " | Importance: ", importanceStr, " | Event time: ", TimeToString(eventTime, TIME_DATE|TIME_SECONDS));

               Print("eventName: ",eventName);

               Print("No.: ", i);

            TimeToStruct(eventTime,str1);

            TimeToStruct(curTime,str2);

            if(str1.year == str2.year && str1.mon == str2.mon && str1.day == str2.day)

            {

               Print("这是当天的事件");

            }

            else{

               Print("这不是当天的事件");

            }


         }

      }

   }

}