mql4语言的特点、微妙之处以及技巧 - 页 27 1...20212223242526272829303132333435 新评论 Nauris Zukas 2020.02.13 13:57 #261 Andrey Khatimlianskii: 用错误的参数集调用该指标 是的,该指标有相当多的参数,有什么办法可以确保iCustom能填满内存?填充内存大约需要2个小时,所以测试一个空的iCustom并一次添加一个参数将需要很长的时间。有什么建议吗? P.S. 我也会直观地浏览所有的参数。 TheXpert 2020.02.13 14:02 #262 Nauris Zukas: 是的,该指标有相当多的参数,但有什么办法能确保iCustom能准确地填满内存? 日志中会有大量的指标创建。 Nauris Zukas 2020.02.13 14:11 #263 TheXpert: 日志中会有很多的指标 是的,我知道你的意思,我在策略测试器中 也看到过这种情况,当测试后出现了很多指标。但在这里的策略测试器中一切正常。而且一切都在日志中正确显示。 Andrey Khatimlianskii 2020.02.13 14:11 #264 Nauris Zukas: 是的,该指标有相当多的参数,有什么办法能确保iCustom能填满内存?填充内存大约需要2个小时,所以测试一个空的iCustom并一次添加一个参数将需要很长的时间。有什么建议吗? P.S. 我也会直观地浏览所有的参数。 不带参数的调用(那么他们将采取默认的方式),并观察。如果泄漏消失了,那么这就是问题所在。 Andrey Khatimlianskii 2020.02.13 14:13 #265 Nauris Zukas: EA吃掉的是一点一点积累起来的内存。 多少是 "一点"? 也许它真的是一个位,而这是推出后出现的报价历史? Nauris Zukas 2020.02.13 14:23 #266 Andrey Khatimlianskii: "一点一点地"--有多少? 也许真的只是一点点,而且是自始至终出现的引用历史? 我用几个EA启动MT4,启用内存记录。在箭头显示的地方出现了崩溃,"EX4文件的内存不足"。 Nauris Zukas 2020.02.13 14:34 #267 Andrey Khatimlianskii: 不带参数的调用(那么他们将采取默认的方式),并观察。如果泄漏消失了,那么这就是问题所在。 好吧,我就这样做吧。 Andrey Khatimlianskii 2020.02.14 11:10 #268 Nauris Zukas: 我用几个EA启动MT4,启用内存记录。在箭头显示的地方出现了崩溃,"EX4文件的内存不足"。 正在使用多少的40%? 它是线性增长的,看起来像一个弯曲的指标电话,是的。 Nauris Zukas 2020.02.14 21:35 #269 Andrey Khatimlianskii: 40%的使用量是多少? 线性增长,看起来像一个曲线指标的调用,是的。 似乎是参数的问题。谢谢你! fxsaber 2020.03.02 08:00 #270 在MT4上这种情况是可能的(我们不谈原因)。 有一个职位是开放的。余额等于N。 从某一时刻起,这些位置就消失了。公平和平衡等于N。在交易的历史中,没有关于该位置的信息。 终端重设没有帮助。 几个小时后,这些头寸出现在交易历史中(它们在某一条件下关闭)。余额和权益得到相应的调整。 这是一种非常罕见的情况,是由许多情况汇合在一起造成的。但它可以发生,尽管概率约为零。 我建议所有的战斗机器人必须有一个机制来识别这种情况。 为此,有必要记住未结订单的票据,并在其消失的情况下检查其在交易历史中的存在。如果他们不在交易历史中,Alertim! 这种保护的功能。 #define TICKET_TYPE int // Получаем все текущие тикеты. int GetTickets( TICKET_TYPE &Tickets[] ) { int Amount = ArraySize(Tickets); for (int i = ArrayResize(Tickets, Amount + OrdersTotal()) - Amount - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS)) Tickets[Amount++] = OrderTicket(); return(ArrayResize(Tickets, Amount)); } // Проверяет наличие потерянных тикетов. int CheckTickets( void ) { static const bool IsTester = MQLInfoInteger(MQL_TESTER); int Amount = 0; if (!IsTester) { static TICKET_TYPE Tickets[]; TICKET_TYPE BadTickets[]; for (int i = ArrayResize(BadTickets, ArraySize(Tickets)) - 1; i >= 0; i--) if (!OrderSelect(Tickets[i], SELECT_BY_TICKET)) { BadTickets[Amount++] = Tickets[i]; Alert("Ticket " + (string)Tickets[i] + " is not found!"); } ArrayResize(BadTickets, Amount); #ifdef __MQL5__ ArraySwap(Tickets, BadTickets); #else // __MQL5__ ArrayFree(Tickets); ArrayCopy(Tickets, BadTickets); #endif // __MQL5__ GetTickets(Tickets); } return(Amount); } 在OnTick的开头调用CheckTickets()。 1...20212223242526272829303132333435 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
用错误的参数集调用该指标
是的,该指标有相当多的参数,有什么办法可以确保iCustom能填满内存?填充内存大约需要2个小时,所以测试一个空的iCustom并一次添加一个参数将需要很长的时间。有什么建议吗?
P.S. 我也会直观地浏览所有的参数。
是的,该指标有相当多的参数,但有什么办法能确保iCustom能准确地填满内存?
日志中会有很多的指标
是的,我知道你的意思,我在策略测试器中 也看到过这种情况,当测试后出现了很多指标。但在这里的策略测试器中一切正常。而且一切都在日志中正确显示。
是的,该指标有相当多的参数,有什么办法能确保iCustom能填满内存?填充内存大约需要2个小时,所以测试一个空的iCustom并一次添加一个参数将需要很长的时间。有什么建议吗?
P.S. 我也会直观地浏览所有的参数。
不带参数的调用(那么他们将采取默认的方式),并观察。如果泄漏消失了,那么这就是问题所在。
EA吃掉的是一点一点积累起来的内存。
多少是 "一点"?
也许它真的是一个位,而这是推出后出现的报价历史?
"一点一点地"--有多少?
也许真的只是一点点,而且是自始至终出现的引用历史?
我用几个EA启动MT4,启用内存记录。在箭头显示的地方出现了崩溃,"EX4文件的内存不足"。
不带参数的调用(那么他们将采取默认的方式),并观察。如果泄漏消失了,那么这就是问题所在。
好吧,我就这样做吧。
我用几个EA启动MT4,启用内存记录。在箭头显示的地方出现了崩溃,"EX4文件的内存不足"。
正在使用多少的40%?
它是线性增长的,看起来像一个弯曲的指标电话,是的。
40%的使用量是多少?
线性增长,看起来像一个曲线指标的调用,是的。
似乎是参数的问题。谢谢你!
在MT4上这种情况是可能的(我们不谈原因)。
这是一种非常罕见的情况,是由许多情况汇合在一起造成的。但它可以发生,尽管概率约为零。
我建议所有的战斗机器人必须有一个机制来识别这种情况。
为此,有必要记住未结订单的票据,并在其消失的情况下检查其在交易历史中的存在。如果他们不在交易历史中,Alertim!
这种保护的功能。