MQL4历史数据的内存不足

时间:2016-12-01 10:06:38

标签: mql4 metatrader4

我在更高的时间范围内获取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

您对我如何解决此问题有任何建议吗?

可能还有其他设置或环境限制,我不知道?

2 个答案:

答案 0 :(得分:0)

您的磁盘上可能没有空间或没有数据。

要运行MetaTrader终端策略测试程序,您需要数据,可以按 F2 进行检查,然后选择符号和时间范围。

如果没有数据(例如 D1 ) - 按 Download 按钮即可获得该数据数据,然后再次运行策略测试程序。

我希望有所帮助。

答案 1 :(得分:0)

这基本上意味着 MT4 吃掉了您所有的 RAM 内存。 (您可以在“任务管理器”中查看,按 CTR+ALT+DEL)

解决方案 转到工具 -> 选项 ->“图表中的最大条数”并设置为 5000

...你可能有一些巨大的数字。

..现在重启 MT4 一切正常。