MT版本存档。 - 页 4 1234567 新评论 [删除] 2019.06.16 16:33 #31 Roman:在这种情况下,我们不能做检查吗? 不幸的是,这次检查并没有产生任何结果... Alexey Viktorov 2019.06.16 16:40 #32 Roman:通过举一个IsStopped()的例子,我只是想回答第一部分。有时有必要提前完成对某一事件的处理,而有时则像你的情况一样紧急。 请阅读文档中关于这个函数IsStopped() 的描述,也许它能带来一些想法。 但在你看来,这是来自另一个方向。如果是来自另一个主题,对不起,可能是猜的。 但正如他们所说,在可能的建议中,并解决了问题。 确定的解决方案不会告诉任何人,因为没有人知道他代码的所有逻辑,可能也不会深入研究。罗曼,你又一次没有把话全部引用完。而你在所有突出的人中突出了它。 好吧,好吧,让我们说开始强制关机。而且我需要让这个终止事件一直执行到结束,而且计算的复杂性超过3秒。那我怎样才能防止终止程序,让它运行到最后?这正是问题所在。谈话的内容不是如何终止,而是如何防止错误地调用终止。或者不是阻止,而是推迟到某一时刻,特别是推迟到事件处理完成。 Alexey Viktorov 2019.06.16 16:51 #33 Сергей Таболин:这里是对你的选择的检查。结果是这样的信息。 这是个死胡同...因此,建议的方案是 bool tester_stop = false; // флаг проверки выхода по TesterStop ....... void OnTick() { //--- пропустить бесполезные проходы оптимизации if(!check_init && (MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_TESTER))) { if(недопустимый параметр) tester_stop = TesterStop(); ........ } double OnTester() { if(tester_stop) return(-99999999999.99); 将以完全相同的方式进行计算。而你将再次得到一个 "僵局"。但僵局不在mql,而是在你的头脑中。这不是做编程的方法。在你对代码抱有任何期望之前,想象自己处于一个白痴的位置,像计算机一样盲目地把整个代码走几遍。确保在特定情况下,执行必须通过。在特定情况下应接收哪些参数。然后开始执行,并检查我们是否得到我们所期望的。如果没有,那么我们必须找出我们在调试过程中得到的东西。 不可能是别的。而且绝对不可能对代码片段进行调试。 Roman 2019.06.16 17:01 #34 Alexey Viktorov:罗曼,你又一次没有把话全部引用完。而你在所有突出的人中突出了。好吧,好吧,让我们说一个强制终止被触发了。而且我需要触发这个终止的事件一直执行到结束,而且计算的复杂性超过3秒。那我怎样才能防止程序终止,让它运行到最后?这正是问题所在。谈话的内容不是如何终止,而是如何防止错误地调用终止。或者不是阻止,而是推迟到某一时刻,特别是推迟到事件处理完成。我们必须等待计算完成。 不幸的是,mql并不包含像await这样的函数。 我们可以尝试用Sleep() 进行实验,但是slip并不是终止的明确标志,所以它并不太适合。 尝试创建另一个条件,如果(计算被执行),那么我们将已经开始强制终止。 [删除] 2019.06.16 17:08 #35 Alexey Viktorov:所以我提议的方案是 将以完全相同的方式进行计算。而你将再次得到一个 "僵局"。但僵局不在mql,而是在你的头脑中。你不能去做这样的编程。在你对代码抱有任何期望之前,想象自己处于一个白痴的位置,像计算机一样盲目地把整个代码走几遍。确保在特定情况下,执行必须通过。在特定情况下应接收哪些参数。然后开始执行,检查我们是否得到了我们所期望的。如果没有,那么我们必须找出我们在调试过程中得到的东西。不可能是别的。但你不能逐个片段地调试代码。好吧,这就是问题所在,更新前一切都在工作,现在我只是不知道该怎么办。 此外,所有的代码原则上都是开放的。 此外,我想开一个主题来讨论我的OnTester()版本的改进,就在这里。 结果发现,问题不在这里,而是在改变了的TesterStop() 的执行。它实际上与OnTester()没有直接联系,但它破坏了我的心情...... 我现在要试试别的东西... Alexey Viktorov 2019.06.16 17:19 #36 Сергей Таболин:这就是问题所在,在更新之前一切都在工作,但现在我就是不知道该怎么做。 此外,在原则上,所有的代码都是开放的。 此外,我已经想开一个主题,讨论我的OnTester()版本的改进,现在就在这里。 结果发现,问题不在这里,而是在改变了的TesterStop()的执行。它实际上与OnTester()没有直接联系,但它破坏了我的心情...... 我现在要试试别的东西...你已经给了一个以前的建设的链接。替换文件并检查它们。然后你可以告诉大家现在哪种构建方式可行。如果它不工作,这意味着没有导致现在出现问题的这部分代码的参数只是相同。 [删除] 2019.06.16 18:15 #37 Alexey Viktorov:所以给了你一个以前建造的链接。替换文件并检查。然后你可以告诉大家现在哪种构建方式可行。如果它不工作,这意味着不导致这部分代码的参数,即现在出现问题的地方,只是相同的。我就是这样试的。把2007年的建设放在那里,所有这些问题都消失了。我专门翻看了优化后的整个日志。我发现了4个(只有4个!)除以0的错误。那些是在没有交易时发生的。当然,这需要修复,但它对整个优化结果没有影响!"。但新的建设造成了惊人的错误,使优化成为不可能。 现在,关于@Roman的 提示。 谢谢你,这是个好主意。但在我的案例中,它似乎对TesterStop()毫无用处,因为TesterStop()要求测试必须已经通过了某个未知的百分比。而在文件中却没有一个字提到这一点。 但用ExsprtRemove()时效果不错。对于这个函数来说,有多少测试通过并不重要。但我们不得不将整个工作代码包裹在if中。 if(!IsStopped()) { тут рабочий код } 好吧,我设法用拐杖修复了代码。再次感谢。 P.S. 其实我不得不为另一个拐杖做一个拐杖。有趣的)))) Alexey Viktorov 2019.06.16 18:37 #38 Сергей Таболин:P.S. 实际上不得不为另一个拐杖做一个拐杖。这很有趣 ))))我不认为没有任何选择。如果你喜欢对拐杖编程,我无权阻止。斯拉瓦就这一问题作了回答。 关于交易、自动交易系统和策略测试的论坛 虫子、虫子、问题 斯拉瓦, 2019.06.16 14:04 立即停止专家顾问意味着内存损坏。在 专家顾问立即停止后,可能有未释放的内存块。因此,只有在客户终端或测试员代理被终止时,并且只有在专家顾问不处理停止标志并继续执行时,才会使用专家顾问的立即停止。 TesterStop给出了终止测试的命令。这意味着在当前处理程序OnInit, OnTick, OnTimer, OnChartEvent完成后,将不再处理测试器的事件,因为处理周期已经结束。而是调用OnTester和OnDeinit。 也许,你在之前的构建中使用了一个错误。现在这个错误已经被修复,我们必须寻找一个合适的解决方案。 Roman 2019.06.16 18:45 #39 Сергей Таболин:我就是这样试的。把2007年的建设放在那里,所有这些问题都消失了。我专门翻看了优化后的整个日志。我发现了4个(只有4个!)除以0的错误。那些是在没有交易时发生的。当然,这需要修复,但它对整个优化结果没有影响!"。但新的建设造成了惊人的错误,使优化成为不可能。 现在,关于@Roman的 提示。 谢谢你,这是个好主意。但在我的案例中,它似乎对TesterStop()毫无用处,因为TesterStop()要求测试必须已经通过了某个未知的百分比。而在文件中却没有一个字提到这一点。 但用ExsprtRemove()时效果不错。对于这个函数来说,有多少测试通过并不重要。但我们不得不将整个工作代码包裹在if中。 好吧,我设法用拐杖修复了代码。再次感谢。 P.S. 其实我不得不为另一个拐杖做一个拐杖。有趣的))))这不是一个拐杖,而是开发者的推荐做法。 我在while循环的描述中发现了这个函数 while(!IsStopped()) { } 这就是为什么我有一个想法:如果这个函数可以检查程序强制终止的事实,为什么不把它用于TesterStop()。 遗憾的是,它对TesterStop()不起作用,我们现在会知道这个问题。 但是,我们可以公平地问一下开发者,IsStopped()函数是否必须对TesterStop()函数起作用? 也许这是个错误?但最主要的是问题的解决。 [删除] 2019.06.16 18:57 #40 Alexey Viktorov:我不相信没有选择。如果你喜欢对拐杖进行编程,我无权干涉。斯拉瓦就这一问题作出答复 也许,你已经使用了开发人员在以前的构建中的一个失误。现在这个bug被修复了,我们必须寻找一个合适的解决方案。我明白一切,我不需要拐杖。而我不得不在这里 寻找一个拐杖,读它是为了什么。 也许。但我不记得有人抱怨过这个问题。 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在这种情况下,我们不能做检查吗?
不幸的是,这次检查并没有产生任何结果...
通过举一个IsStopped()的例子,我只是想回答第一部分。
有时有必要提前完成对某一事件的处理,而有时则像你的情况一样紧急。
请阅读文档中关于这个函数IsStopped() 的描述,也许它能带来一些想法。
但在你看来,这是来自另一个方向。如果是来自另一个主题,对不起,可能是猜的。
但正如他们所说,在可能的建议中,并解决了问题。
确定的解决方案不会告诉任何人,因为没有人知道他代码的所有逻辑,可能也不会深入研究。
罗曼,你又一次没有把话全部引用完。而你在所有突出的人中突出了它。
好吧,好吧,让我们说开始强制关机。而且我需要让这个终止事件一直执行到结束,而且计算的复杂性超过3秒。那我怎样才能防止终止程序,让它运行到最后?这正是问题所在。谈话的内容不是如何终止,而是如何防止错误地调用终止。或者不是阻止,而是推迟到某一时刻,特别是推迟到事件处理完成。
这里是对你的选择的检查。结果是这样的信息。
这是个死胡同...
因此,建议的方案是
将以完全相同的方式进行计算。而你将再次得到一个 "僵局"。但僵局不在mql,而是在你的头脑中。这不是做编程的方法。在你对代码抱有任何期望之前,想象自己处于一个白痴的位置,像计算机一样盲目地把整个代码走几遍。确保在特定情况下,执行必须通过。在特定情况下应接收哪些参数。然后开始执行,并检查我们是否得到我们所期望的。如果没有,那么我们必须找出我们在调试过程中得到的东西。
不可能是别的。而且绝对不可能对代码片段进行调试。
罗曼,你又一次没有把话全部引用完。而你在所有突出的人中突出了。
好吧,好吧,让我们说一个强制终止被触发了。而且我需要触发这个终止的事件一直执行到结束,而且计算的复杂性超过3秒。那我怎样才能防止程序终止,让它运行到最后?这正是问题所在。谈话的内容不是如何终止,而是如何防止错误地调用终止。或者不是阻止,而是推迟到某一时刻,特别是推迟到事件处理完成。
我们必须等待计算完成。
不幸的是,mql并不包含像await这样的函数。
我们可以尝试用Sleep() 进行实验,但是slip并不是终止的明确标志,所以它并不太适合。
尝试创建另一个条件,如果(计算被执行),那么我们将已经开始强制终止。
所以我提议的方案是
将以完全相同的方式进行计算。而你将再次得到一个 "僵局"。但僵局不在mql,而是在你的头脑中。你不能去做这样的编程。在你对代码抱有任何期望之前,想象自己处于一个白痴的位置,像计算机一样盲目地把整个代码走几遍。确保在特定情况下,执行必须通过。在特定情况下应接收哪些参数。然后开始执行,检查我们是否得到了我们所期望的。如果没有,那么我们必须找出我们在调试过程中得到的东西。
不可能是别的。但你不能逐个片段地调试代码。
好吧,这就是问题所在,更新前一切都在工作,现在我只是不知道该怎么办。
此外,所有的代码原则上都是开放的。
此外,我想开一个主题来讨论我的OnTester()版本的改进,就在这里。
结果发现,问题不在这里,而是在改变了的TesterStop() 的执行。它实际上与OnTester()没有直接联系,但它破坏了我的心情......
我现在要试试别的东西...
这就是问题所在,在更新之前一切都在工作,但现在我就是不知道该怎么做。
此外,在原则上,所有的代码都是开放的。
此外,我已经想开一个主题,讨论我的OnTester()版本的改进,现在就在这里。
结果发现,问题不在这里,而是在改变了的TesterStop()的执行。它实际上与OnTester()没有直接联系,但它破坏了我的心情......
我现在要试试别的东西...
你已经给了一个以前的建设的链接。替换文件并检查它们。然后你可以告诉大家现在哪种构建方式可行。如果它不工作,这意味着没有导致现在出现问题的这部分代码的参数只是相同。
所以给了你一个以前建造的链接。替换文件并检查。然后你可以告诉大家现在哪种构建方式可行。如果它不工作,这意味着不导致这部分代码的参数,即现在出现问题的地方,只是相同的。
我就是这样试的。把2007年的建设放在那里,所有这些问题都消失了。我专门翻看了优化后的整个日志。我发现了4个(只有4个!)除以0的错误。那些是在没有交易时发生的。当然,这需要修复,但它对整个优化结果没有影响!"。但新的建设造成了惊人的错误,使优化成为不可能。
现在,关于@Roman的 提示。
谢谢你,这是个好主意。但在我的案例中,它似乎对TesterStop()毫无用处,因为TesterStop()要求测试必须已经通过了某个未知的百分比。而在文件中却没有一个字提到这一点。
但用ExsprtRemove()时效果不错。对于这个函数来说,有多少测试通过并不重要。但我们不得不将整个工作代码包裹在if中。
好吧,我设法用拐杖修复了代码。再次感谢。
P.S. 其实我不得不为另一个拐杖做一个拐杖。有趣的))))
P.S. 实际上不得不为另一个拐杖做一个拐杖。这很有趣 ))))
我不认为没有任何选择。如果你喜欢对拐杖编程,我无权阻止。斯拉瓦就这一问题作了回答。
关于交易、自动交易系统和策略测试的论坛
虫子、虫子、问题
斯拉瓦, 2019.06.16 14:04
立即停止专家顾问意味着内存损坏。在 专家顾问立即停止后,可能有未释放的内存块。因此,只有在客户终端或测试员代理被终止时,并且只有在专家顾问不处理停止标志并继续执行时,才会使用专家顾问的立即停止。
TesterStop给出了终止测试的命令。这意味着在当前处理程序OnInit, OnTick, OnTimer, OnChartEvent完成后,将不再处理测试器的事件,因为处理周期已经结束。而是调用OnTester和OnDeinit。
我就是这样试的。把2007年的建设放在那里,所有这些问题都消失了。我专门翻看了优化后的整个日志。我发现了4个(只有4个!)除以0的错误。那些是在没有交易时发生的。当然,这需要修复,但它对整个优化结果没有影响!"。但新的建设造成了惊人的错误,使优化成为不可能。
现在,关于@Roman的 提示。
谢谢你,这是个好主意。但在我的案例中,它似乎对TesterStop()毫无用处,因为TesterStop()要求测试必须已经通过了某个未知的百分比。而在文件中却没有一个字提到这一点。
但用ExsprtRemove()时效果不错。对于这个函数来说,有多少测试通过并不重要。但我们不得不将整个工作代码包裹在if中。
好吧,我设法用拐杖修复了代码。再次感谢。
P.S. 其实我不得不为另一个拐杖做一个拐杖。有趣的))))
这不是一个拐杖,而是开发者的推荐做法。
我在while循环的描述中发现了这个函数
这就是为什么我有一个想法:如果这个函数可以检查程序强制终止的事实,为什么不把它用于TesterStop()。
遗憾的是,它对TesterStop()不起作用,我们现在会知道这个问题。
但是,我们可以公平地问一下开发者,IsStopped()函数是否必须对TesterStop()函数起作用?
也许这是个错误?
但最主要的是问题的解决。
我不相信没有选择。如果你喜欢对拐杖进行编程,我无权干涉。斯拉瓦就这一问题作出答复
我明白一切,我不需要拐杖。而我不得不在这里 寻找一个拐杖,读它是为了什么。
也许。但我不记得有人抱怨过这个问题。