我在更高的时间范围内获取bar的时间值时遇到问题。我在测试人员中测试我的专家顾问,当我尝试使用带有 iTime()
参数的函数 PERIOD_D1
时,我总是会收到 1970.01.01 00:00:00
此外, GetLastError()
函数会返回“not enough memory for history data
”消息。即使测试仪运行了几天的数据,它也会重复所有时间。贝娄是我试图运行的代码:
datetime t = iTime( Symbol(), PERIOD_D1, 0 );
Print( "Trend tick time: " + t );
int check1 = GetLastError();
if ( check1 != ERR_NO_ERROR ) Print( "Error: ", ErrorDescription( check1 ) );
我得到这样的输出:
0 22:33:24 2016.06.29 08:00 HLR FDE30,M1: Trend tick time: 1970.01.01 00:00:00
0 22:33:24 2016.06.29 08:00 HLR FDE30,M1: Error: not enough memory for history data
0 22:33:25 2016.06.30 08:00 HLR FDE30,M1: Trend tick time: 1970.01.01 00:00:00
0 22:33:25 2016.06.30 08:00 HLR FDE30,M1: Error: not enough memory for history data
0 22:33:26 2016.07.01 08:00 HLR FDE30,M1: Trend tick time: 1970.01.01 00:00:00
0 22:33:26 2016.07.01 08:00 HLR FDE30,M1: Error: not enough memory for history data
[...]
当我调用其他带有时间帧参数的内置函数时,会发生同样的事情。例如 iMA()
, iCCI()
, iRSI()
。
文档表明上述函数可以接受任何时间范围值:https://docs.mql4.com/series/itime
我只想补充一点,我的MetaTrader终端图设置是:
Max bars in history: 1250000
Max bars in chart: 1250000
您对我如何解决此问题有任何建议吗?
可能还有其他设置或环境限制,我不知道?
答案 0 :(得分:0)
您的磁盘上可能没有空间或没有数据。
要运行MetaTrader终端策略测试程序,您需要数据,可以按 F2
进行检查,然后选择符号和时间范围。
如果没有数据(例如 D1
) - 按 Download
按钮即可获得该数据数据,然后再次运行策略测试程序。
我希望有所帮助。
答案 1 :(得分:0)
这基本上意味着 MT4 吃掉了您所有的 RAM 内存。 (您可以在“任务管理器”中查看,按 CTR+ALT+DEL)
解决方案 转到工具 -> 选项 ->“图表中的最大条数”并设置为 5000
...你可能有一些巨大的数字。
..现在重启 MT4 一切正常。