64位MT5 build 858锁定...

 

你好。

我的经纪人昨天发布了64位版本的MT5 build 858,从build 842(一直运行良好)升级到这个新版本后,MT5零星地锁住了(即冻结,变得没有反应)。发生这种情况后,关闭MT5的唯一方法是通过任务管理器杀死它。

这个问题在我的MT5演示机(windows 7)和我的MT5 Live VPS机器(Windows Server 2008r2)上都很明显。这两台机器之前都顺利运行了MT5 build 842。

MT5的配置没有任何变化--在build 842上使用的专家等现在也在这两台build 858上运行。

几周前,我还启动了一台32位的机器来测试build 858(由于某些原因,我的build 858的32位版本几周前才发布,64位版本昨天才发布),我没有任何问题。此后,我把我的真实交易转移到32位平台上,至今没有任何问题。我一直运行的64位演示版今天下午再次崩溃了。

哦,在日志中没有任何迹象表明MT5有任何问题。

还有人遇到这些问题吗?

 
我想你向服务台报告了这个问题?
 
angevoyageur:
我想你向服务台报告了这个问题?
啊,没有--当时太匆忙了,我完全忘记了!谢谢你的提醒 - 现在就去做...
 

这个问题的现状 - 锁定问题发生在Build 858和目前MetaQuotes网站上的新版本 - build 868。锁定问题在32位和64位平台上都有发生。 我目前在MetaQuotes和我的经纪人那里都有一份问题报告在运行。

是否有其他人在使用比build 842更新的版本时有锁定问题?我正在运行一些专家,所以怀疑MT5可能需要合理地 "加载 "才能发生这些锁定问题。

我也在不同的机器和VPS 实例上重新安装了MT5(基本上是为了排除任何机器问题)。因为这些安装都是新安装的,所以我看不出我的MT5安装在某些方面被破坏了。我还用新的编译器重新编译了我的专家,这也没有什么不同。

为了记录在案,我在同样的机器上运行完全相同的专家程序,因为我在过去的一年里一直在运行(在MT5的不同版本上),从来没有出现过MT5锁定的情况(实际上直到现在,我对MT5的稳定性一直印象深刻)。只是当我把没有问题的MT5 build 842安装升级到build 858安装时,这些问题才开始出现。

 
cowil:

这个问题的现状 - 锁定问题发生在Build 858和目前MetaQuotes网站上的新版本 - build 868。锁定问题在32位和64位平台上都有发生。 我目前在MetaQuotes和我的经纪人那里都有一份问题报告在运行。

是否有其他人在使用比build 842更新的版本时有锁定问题?我正在运行一些专家,所以怀疑MT5可能需要合理地 "加载 "才能发生这些锁定问题。

我也在不同的机器和VPS实例上重新安装了MT5(基本上是为了排除任何机器问题)。因为这些安装都是新安装的,所以我看不出我的MT5安装在某些方面被破坏了。我还用新的编译器重新编译了我的专家,这也没有什么不同。

为了记录在案,我在相同的机器上运行完全相同的专家程序,因为我在过去的一年里一直在运行(在MT5的不同版本上),从来没有出现过MT5锁定的情况(实际上直到现在,我对MT5的稳定性一直印象深刻)。只是当我把没有问题的MT5 build 842安装升级到build 858安装时,这些问题才开始出现。

我在Build 858/868的Bars()函数 中发现了一个错误。这个错误大大降低了代码的执行速度。也许你也有这个问题。
Documentation on MQL5: Timeseries and Indicators Access / Bars
Documentation on MQL5: Timeseries and Indicators Access / Bars
  • www.mql5.com
Timeseries and Indicators Access / Bars - Documentation on MQL5
 
angevoyageur:
我在Build 858/868的Bars()函数 中发现一个错误。这个错误大大降低了代码的执行速度。也许你也有这个问题。

你好 - 谢谢你的意见。

我的代码中实际上没有使用Bars()函数,但我确实发现,一个如此严重的错误已经悄悄出现在这样一个常用的函数中,这有点令人担忧--尤其是它以前并不存在......也许我使用的一个相关函数,调用了与Bars()函数相同的底层代码?

你是如何发现这个问题并将其隔离的?Bars()完成其功能所需的时间是否特别长?如果是这样,你说的是什么样的时间--100多毫秒?

我试图让MetaQuotes或我的经纪人向我提供一个842或更早的版本,但还没有成功......

 
cowil:

你好 - 谢谢你的意见。

我的代码中实际上没有使用Bars()函数,但我确实发现,一个如此严重的错误已经悄悄出现在这样一个常用的函数中,这有点令人担忧--尤其是它以前并不存在......也许我使用的一个相关函数,调用了与Bars()函数相同的底层代码?

你是如何发现这个问题并将其隔离的?Bars()完成其功能所需的时间是否特别长?如果是这样,你说的是什么样的时间--100多毫秒?

我试图让MetaQuotes或我的经纪人为我提供一个842或更早的版本,但还没有成功......

首先,我观察到一个EA没有在每个tick上更新显示在图表上的信息。所以我开始调试代码,发现OnTick()事件处理程序没有在每个tick上调用,所以这意味着前一个tick的OnTick仍在运行。

然后我用剖析器分析OnTick()中发生了什么,我发现Bars()函数 需要很多时间来执行。在我用非常简单的代码检查Bars()函数后,确认这是MT5/mql5的一个错误。同样的代码在Build 842中工作没有问题。

剖析器是 一个很好的工具,很容易使用,很强大。

 
angevoyageur:

首先,我观察到一个EA没有在每个tick上更新图表上显示的信息。所以我开始调试代码,发现OnTick()事件处理程序并没有在每个tick上调用,所以这意味着前一个tick的OnTick仍在运行。

然后我用分析器来分析OnTick()中发生了什么,我发现Bars()函数 需要很多时间来执行。在我用非常简单的代码检查Bars()函数后,确认这是MT5/mql5的一个错误。同样的代码在Build 842中工作没有问题。

剖析器是 一个很好的工具,很容易使用,很强大。

首先,非常感谢您提供的信息--非常感谢!:)

天啊,你说几秒钟?这绝对是一个严重的问题。我想我可能会做同样的事情,看看我的专家是什么情况。我在8个不同的图表上运行同一个专家,因此,如果每个专家都出现这种延迟,真不知道会发生什么。

MetaQuotes也没有给我带来喜悦:试图获得842或更早的版本。引用"不,我们没有链接到842版本。我们不在任何地方存储旧版本。"。难以置信... :( 当你说你有一个842版本时,我想这是一个已经安装的版本,而不是一个可安装的版本?

 
cowil:

首先,非常感谢您提供的信息--非常感谢!:)

天啊,你说几秒钟?这绝对是一个严重的问题。我想我可能会做同样的事情,看看我的专家是怎么做的。我在8个不同的图表上运行同一个专家,因此,如果每个专家都出现这种延迟,真不知道会发生什么。

MetaQuotes也没有给我带来喜悦:试图获得842或更早的版本。引用"不,我们没有链接到842版本。我们不在任何地方存储旧版本。"。难以置信... :( 当你说你有一个build 842,我推测它是一个已经安装的版本,而不是一个可安装的版本?

是的,已经从一个经纪人那里安装了(见你的PM)。
 

好吧,我自己的经纪人也不能向我提供一个旧版本。因此,虽然看起来不可思议,但无论是我的(大型)经纪人,还是实际开发软件的大型软件公司(即MetaQuotes),都不能为我提供MT5的一个旧版本。难以置信!!

因此,对于任何其他读到这篇文章的人来说,升级基本上是一条单行道!虽然看起来很不可思议,但如果MT5版本出现问题,没有以前的版本可供回溯,!!!!。因此,在承诺新版本之前,请确保对所有内容进行全面测试,特别是在现场(即使用真钱)环境下进行测试!!。

如果你这次像我一样马虎(即在承诺新版本之前没有彻底测试一切),有和我一样的或类似的问题,并且已经用尽了所有其他的选择,这里是我用过的对我有用的黑客。这并不意味着它对你有用,我建议任何人只有在你(a)完全失败(像我一样)和(b)对计算机有相当了解的情况下才这样做。

1.找一个仍然在运行Build 842的人。

2.2.要求他们复制整个MT5安装 目录结构,并将其放入他们电脑上的一个临时目录。

3.3.要求他们查看.../bases/xxx/history/<SymbolPair>目录(在他们的临时目录中复制的MT5安装目录),并删除每个目录的全部内容(这一步基本上是删除该特定经纪人的历史数据)。

4.4.一旦历史数据被删除,请他们将临时目录中的整个安装目录结构压缩并发送给你(我用dropbox做的)。

5.在你自己的电脑上,安装build 858/868(这确保了适当的注册表设置)。

6.将你收到的整个MT5安装文件解压到你电脑上的临时目录中,并将收到的MT5安装文件的安装目录(在你的临时目录中)重命名为你在上述858/868安装中使用的安装目录名称。

7.删除MT5 build 858/868的安装目录结构,用你目前在临时目录中的目录替换它。

8.8. 被替换的MT5目录中的文件很可能都被标记为只读。把它们标记为读/写。

8.8. 启动MT5。你现在应该有一个工作版本的842。当然,你现在需要在 "工具"->"选项"->"服务器 "选项卡中配置你的经纪商的服务器名称(如果你收到的842安装被配置为使用另一个经纪商而不是你自己的),登录名和密码。

我想再次强调,这是一个最后的手段,我不赞成,而且肯定不会被MQ或你的经纪人赞成。然而,绝望的时候有时需要采取绝望的措施。如果你需要一个842版本的安装包,请让我知道。

 
angevoyageur:
是的,已经从一个经纪人那里安装了(见你的PM)。

你好。

我尝试了各种经纪商的842版本,但是我遇到的那些经纪商都已经升级了。最后,上面的黑客让我重新开始运行 - 从那时起(手指交叉)我的MT5安装没有再崩溃过。

我立即注意到的一件事是,Build 842似乎比两个较新的Build运行得更有效(即更少的处理器使用),所以我怀疑你在Bars()函数 上遇到的问题可能发生在另一个函数上,而我恰好在我的专家中使用该函数。我想是时候把分析器拿出来,开始运行我自己的测试了。如果我找到了问题所在,MetaQuotes完全可以把我损失的300欧元(由于这个有问题的构建)支付给我,以换取这方面的知识。:)

总之,再次感谢您的帮助--非常感谢