指示器被破坏 - 页 3 123456 新评论 JC 2011.10.07 20:34 #21 AnkaSoftware: JIC,请注意这个问题在32位平台上不会发生。我在先前的一个帖子中提供了一些代码。 你有两台(或更多)独立的机器,它们接收的数据不一定完全相同。例如,64位系统可能在一个繁忙的VPS节点上,该节点偶尔会失去流量和/或连接,例如,因为物理节点是在处理器使用或带宽的极端情况下运行。(还有许多其他可能的解释;这只是其中之一)。 在你明白为什么当M1柱状图出现空隙时,不管是什么紫线的绘制都会停止,那么我就会把其他一切都当作巧合。 最后,我要回到我的开场白:没有理由64位的Windows会导致任何像你所描述的那样的问题。很多人在这个论坛上提出报告,说MT4在X、Y、Z平台上不能正常工作,最后才发现是他们的代码出了问题。你要么是在一个成熟的软件中发现了几年来第一个真正意义上的MQL4错误,这个软件被数百万人使用,要么就是你的代码有问题。从目前的证据来看,绝大多数的可能性是--例如,你分别报告说问题发生在16小时后或3-4小时后--问题是由数据的偶尔波动引起的,而你没有正确地加以处理。 William Roeder 2011.10.08 15:34 #22 AnkaSoftware: a) 指标的破坏只发生在Windows 64位平台上 d) 代码使用如下 声明 <代码 #property indicator_chart_window 在Vista/Win7上不要安装在\Program Files*中 void DrawMoveEx(double& serie[], int start, int end, double startlevel, double endlevel) { double a = (endlevel - startlevel) / (start - end); double y; int bar; for(int x = 0; x <= start - end; x++) { y = a * x; bar = start - x; serie[bar] = startlevel + y; } } 不知道你在这里想做什么。首先,你计算了很多数值(开始...结束),但只存储了一个(serie[bar]),我的编码是。void DrawMoveEx(double& serie[], int start, int end, double startlevel, double endlevel) { double a = (endlevel - startlevel) / (start - end); for(int x = start; x <= end; x++) serie[x] = a * x + startlevel; } AnkaSoftware 2011.10.11 16:06 #23 附上样本指标,它可以重现这个问题。在64位Windows平台上,将指标附在M1图表上,并让它运行4个小时以上。 附加的文件: corruptionctest.mq4 5 kb JC 2011.10.11 17:25 #24 AnkaSoftware: 附上样本指标,它可以重现这个问题。在64位Windows平台上,将指标附在M1图表上,并让它运行4个多小时。 对不起,我没有耐心把一台干净的64位机器分配给它,然后等待4个多小时。 然而,如果这个指标真的再现了这个问题,那么我必须同意,这很有趣。我无法立即看出任何内部问题可能隐藏在哪里。(假设像以前一样,你已经明确排除了问题发生与最近MT4和经纪商之间连接的突发事件之间的关联性。你提到了你对CNS的信任;你还没有确认MT4日志中没有提到连接问题,而连接问题又可能导致回填交易记录)。 如果你想追究MT4的问题,那么它似乎最有可能与通过参考传递指标数组有关。MQL4中的数组有一些奇怪的属性,比如说总是静态的,我想可能是有一个奇怪的潜在问题,那就是通过引用来传递特殊的指标缓冲区数组,这只在Win64上引发了问题。尽管在这种情况下,为什么操作系统会产生差异,这仍然是一个完全的谜。 我会尝试改变DrawMoveEx(),这样它就不再需要对指标数组的引用,而是有单独的函数,如DrawMoveEx_Down1()、DrawMoveEx_Up1()等,它们只是将缓冲区作为全局变量来处理。如果这有什么不同,那么,恭喜你,你几乎肯定发现了一个MT4的错误。可能是今天的第二个错误。 Simon Gniadkowski 2011.10.11 21:49 #25 AnkaSoftware: 附上样本指标,它可以重现这个问题。在64位Windows平台上,将指标附在M1图表上,让它运行4小时以上。 在Windows 7 Ultimate 64位上运行了5个多小时,没有问题。 AnkaSoftware 2011.10.12 04:37 #26 RaptorUK: 在Windows 7 Ultimate 64位上运行了5个多小时,没有问题。 JIC a) 根据你的建议,修改了代码,删除了 传递的引用,但没有解决这个问题。修改后的代码附在后面。 b) 你所说的缺失条形图,很可能是由于没有交易条件,因此经纪人没有发送条形图。IMHO,在失去连接的情况下,一旦连接恢复,缺失的条形图就可以得到。如果你看到我的示例代码,不存在对条形连续的依赖性。 Raptor, 谢谢你的测试。也许你需要加入进来才能看到这个错误。我能够在Windows Server 2008 R2 Enterprise上重现这个问题。所以可能是操作系统的问题。有什么想法吗,从哪里可以得到一个特定平台的MT4推荐补丁列表。 . 附加的文件: corruptionetestoii.mq4 5 kb JC 2011.10.12 07:18 #27 AnkaSoftware: 有什么想法吗,从哪里可以得到一个特定平台的MT4推荐补丁列表。 没有这样的东西存在。只有一个版本的MT4可以在所有版本的Windows上运行,没有特别的理由需要多于一个版本。没有特定操作系统的版本或补丁。 Simon Gniadkowski 2011.10.12 07:21 #28 AnkaSoftware: 附上样本指标,它可以重现这个问题。在64位Windows平台上,将指标附加到M1图表上,让它运行4个多小时。 据我所知,它仍然运行正常 ......我怎样才能再现这个错误? AnkaSoftware 2011.10.12 07:48 #29 RaptorUK: 就我所知,仍然运行正常 ......我怎样才能重现这个错误? 你不需要做任何事情。除了放大图表,看看是否发生了错误。 Simon Gniadkowski 2011.10.12 07:55 #30 AnkaSoftware: 你不需要做任何事情。除了放大图表,看看是否发生了错误之外。如果我寻找的是似乎与图表栏断开的线(根据你的第一个帖子),那么我就没有得到任何问题。 123456 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
JIC,请注意这个问题在32位平台上不会发生。我在先前的一个帖子中提供了一些代码。
在你明白为什么当M1柱状图出现空隙时,不管是什么紫线的绘制都会停止,那么我就会把其他一切都当作巧合。
最后,我要回到我的开场白:没有理由64位的Windows会导致任何像你所描述的那样的问题。很多人在这个论坛上提出报告,说MT4在X、Y、Z平台上不能正常工作,最后才发现是他们的代码出了问题。你要么是在一个成熟的软件中发现了几年来第一个真正意义上的MQL4错误,这个软件被数百万人使用,要么就是你的代码有问题。从目前的证据来看,绝大多数的可能性是--例如,你分别报告说问题发生在16小时后或3-4小时后--问题是由数据的偶尔波动引起的,而你没有正确地加以处理。
AnkaSoftware:
a) 指标的破坏只发生在Windows 64位平台上
d) 代码使用如下声明
<代码
#property indicator_chart_window
附上样本指标,它可以重现这个问题。在64位Windows平台上,将指标附在M1图表上,并让它运行4个多小时。
然而,如果这个指标真的再现了这个问题,那么我必须同意,这很有趣。我无法立即看出任何内部问题可能隐藏在哪里。(假设像以前一样,你已经明确排除了问题发生与最近MT4和经纪商之间连接的突发事件之间的关联性。你提到了你对CNS的信任;你还没有确认MT4日志中没有提到连接问题,而连接问题又可能导致回填交易记录)。
如果你想追究MT4的问题,那么它似乎最有可能与通过参考传递指标数组有关。MQL4中的数组有一些奇怪的属性,比如说总是静态的,我想可能是有一个奇怪的潜在问题,那就是通过引用来传递特殊的指标缓冲区数组,这只在Win64上引发了问题。尽管在这种情况下,为什么操作系统会产生差异,这仍然是一个完全的谜。
我会尝试改变DrawMoveEx(),这样它就不再需要对指标数组的引用,而是有单独的函数,如DrawMoveEx_Down1()、DrawMoveEx_Up1()等,它们只是将缓冲区作为全局变量来处理。如果这有什么不同,那么,恭喜你,你几乎肯定发现了一个MT4的错误。可能是今天的第二个错误。
附上样本指标,它可以重现这个问题。在64位Windows平台上,将指标附在M1图表上,让它运行4小时以上。
在Windows 7 Ultimate 64位上运行了5个多小时,没有问题。
JIC a) 根据你的建议,修改了代码,删除了 传递的引用,但没有解决这个问题。修改后的代码附在后面。
b) 你所说的缺失条形图,很可能是由于没有交易条件,因此经纪人没有发送条形图。IMHO,在失去连接的情况下,一旦连接恢复,缺失的条形图就可以得到。如果你看到我的示例代码,不存在对条形连续的依赖性。
Raptor, 谢谢你的测试。也许你需要加入进来才能看到这个错误。我能够在Windows Server 2008 R2 Enterprise上重现这个问题。所以可能是操作系统的问题。有什么想法吗,从哪里可以得到一个特定平台的MT4推荐补丁列表。
.
有什么想法吗,从哪里可以得到一个特定平台的MT4推荐补丁列表。
附上样本指标,它可以重现这个问题。在64位Windows平台上,将指标附加到M1图表上,让它运行4个多小时。
就我所知,仍然运行正常 ......我怎样才能重现这个错误?
你不需要做任何事情。除了放大图表,看看是否发生了错误之外。
如果我寻找的是似乎与图表栏断开的线(根据你的第一个帖子),那么我就没有得到任何问题。