用SymbolInfoSessionTrade函数获取平台交易时间,因夏令时平台交易时间有所改变,但代码仍然按照更改之前的时间执行代码,请问如何解决? 新评论 chengshizairen 2024.03.20 18:25 部分代码展示: MqlDateTime fwqtime; TimeToStruct(TimeCurrent(),fwqtime); ENUM_DAY_OF_WEEK week=(ENUM_DAY_OF_WEEK)fwqtime.day_of_week; datetime from,to; datetime a=SymbolInfoSessionTrade(Symbol(),week,0,from,to); string fromtime=StringSubstr((string)from,StringFind((string)from, " ")+ 1,StringFind((string)from, ":")- 1); string totime=StringSubstr((string)to,StringFind((string)to, " ")+ 1,StringFind((string)to, ":")- 1); datetime StartTime=StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+fromtime); datetime EndTime=StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+totime); 通过上述代码获取了平台的交易开始时间和结束时间,只有在交易的时间段内,才执行某某代码,由于平台因夏令时修改了交易开始时间和结束时间,但代码并未按照获取的最新的交易时间执行代码,还是按照平台修改前的时间执行相关代码。 请教各位大神,该问题如何解决?(我知道图表重新加载EA可以解决,总不能每次夏令时与冬令时转换时,我都重新加载解决吧?) Hung Wen Lin 2024.03.20 22:48 #1 你在Init獲取信息就需要重新加載 把獲取信息放在OnTick或是OnTime 持續檢查交易跟報價時間就可以 chengshizairen 2024.03.21 04:49 #2 Hung Wen Lin #: 你在Init獲取信息就需要重新加載 把獲取信息放在OnTick或是OnTime 持續檢查交易跟報價時間就可以 上述代码我没有放在OnInit里,就是放在 OnTick里的。不知为何我有些时候修改 OnTick里的一些代码后,回测也是按照之前代码执行,重启MT5平台就按照最新代码执行,当然这种现象是偶发。 Hung Wen Lin 2024.03.21 07:35 #3 chengshizairen #: 上述代码我没有放在OnInit里,就是放在 OnTick里的。不知为何我有些时候修改 OnTick里的一些代码后,回测也是按照之前代码执行,重启MT5平台就按照最新代码执行,当然这种现象是偶发。 不會有這樣的問題 代碼沒有按照預期來運行 通常都是代碼順序出了問題 檢查一下 並逐步驗證 chengshizairen 2024.03.21 10:14 #4 Hung Wen Lin #: 不會有這樣的問題 代碼沒有按照預期來運行 通常都是代碼順序出了問題 檢查一下 並逐步驗證 已经检查过代码并无顺序问题,在导航-EA交易-找到相关EA右键修改,不改变任何代码,点击编写,就能获得最新的交易时间(自定义品种,自己修改交易时间进行测试)。实在不知是什么原因导致,用智能工具询问表示可能是缓存问题,难道是编写可以更新缓存? 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
部分代码展示:
MqlDateTime fwqtime;
TimeToStruct(TimeCurrent(),fwqtime);
ENUM_DAY_OF_WEEK week=(ENUM_DAY_OF_WEEK)fwqtime.day_of_week;
datetime from,to;
datetime a=SymbolInfoSessionTrade(Symbol(),week,0,from,to);
string fromtime=StringSubstr((string)from,StringFind((string)from, " ")+ 1,StringFind((string)from, ":")- 1);
string totime=StringSubstr((string)to,StringFind((string)to, " ")+ 1,StringFind((string)to, ":")- 1);
datetime StartTime=StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+fromtime);
datetime EndTime=StringToTime(TimeToString(TimeCurrent(),TIME_DATE)+" "+totime);
通过上述代码获取了平台的交易开始时间和结束时间,只有在交易的时间段内,才执行某某代码,由于平台因夏令时修改了交易开始时间和结束时间,但代码并未按照获取的最新的交易时间执行代码,还是按照平台修改前的时间执行相关代码。
请教各位大神,该问题如何解决?(我知道图表重新加载EA可以解决,总不能每次夏令时与冬令时转换时,我都重新加载解决吧?)