请问经济日历函数CalendarValueHistory可以在回测中获取历史的经济数据吗?谢谢 新评论 Liang Liang Gong 2023.04.03 08:57 如题,我有如下函数,在实时使用时是正常运行的。当前使用,可以获取过去的经济数据,也可以获取未来的经济事件。 但是当我想回测一下的时候,就无法显示历史的经济数据了。 是不是整个经济日历系列函数还不支持回测? 希望大神们能帮忙解答。谢谢。 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("这不是当天的事件"); } } } } } 错误、漏洞、问题 将Windows本地时间与MT5服务器同步 爆仓卫士源代码-Brust guard source code 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如题,我有如下函数,在实时使用时是正常运行的。当前使用,可以获取过去的经济数据,也可以获取未来的经济事件。
但是当我想回测一下的时候,就无法显示历史的经济数据了。
是不是整个经济日历系列函数还不支持回测?
希望大神们能帮忙解答。谢谢。
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("这不是当天的事件");
}
}
}
}
}