我认为这里的问题是,你的EA被设计为在每一个tick的基础上工作,因此,例如,如果EA在M5上平均交叉,在这5分钟内,价格流动,可能使你发送订单的条件发生不止一次。
解决方案是在发送订单时设置一个过滤器,检查你是否在市场上有订单。或者以条为单位进行工作。很抱歉,我是个新手,我可以想到问题出在哪里,但不能给你发任何代码:)。
希望这对你有帮助。
各地的MT4交易账户正在发生一些尴尬的事情(据我所知,任何经纪商都可能发生这种情况)。该平台有时(尽管很少)会重复专家发送的订单。
我 看到这种情况在MT4构建500时至少发生过3次。前两次是在模拟账户上,最后一次,也就是昨天,是在一个真实账户上。问题已经发生了。
1)在不同的MT4系统上。
2)在不同的电脑上。
3)使用不同的经纪商。
4)使用不同的专家顾问。
你需要退出在另一个图表上运行的另一个EA副本 ......如果不是这样,请通过张贴显示专家开始和重复订单的专家日志文件来证明。 这个错误以前也犯过 ......
你们让我有些吃惊。你们认为我一定是做错了什么,MT4不可能有bug。在此,我将回应你们的答案。
这不是EA的问题。我使用的EA已经在不同的平台上工作了一年多了。此外,这个问题已经发生在3个不同的EA上,其中两个是我的,一个是商业的。
我不能公布我的代码,但正如我所说,这个问题发生在3个不同的EA上。当然,它从未在回测中发生。正如我告诉你的,*这种情况很少发生*。事实上,如果你把我的EA(我昨天使用的那个)运行的时间加起来,把所有的账户加起来,它已经运行了好几年了。而昨天这是第一次发生。你认为这可能是我代码中的一个错误吗?
你真的认为我这么天真,在账户里有不止一个EA,然后把这个问题报告出来?
正如我之前所说,主要的证据是日志标签有订单,但专家标签*没有。这简直是不可能的,一个EA正在发送订单,但专家选项卡却没有报告它!这是不可能的。
我可以在这里同时发布专家日志和日记日志,但出于隐私原因,我不可能这样做。但我认为这没有必要。如果你相信我可以阅读这两个文件并告诉你它们说了什么,那么请相信,假命令包含在日志中,而它不包含在专家日志中,所以它根本不是由任何专家发起的。当然,它也不是由我发起的。
我确实希望得到您的支持,但这是为了我们所有用户的利益。如果你认为根本没有错误,Metaquotes会花更多时间来承认这个错误。
我觉得有义务与你分享这一点,我希望Metaquotes至少要做一些检查。
我不知道如何在不激怒像你这样的人的情况下很好地说出这一点。但你需要改变你的态度。当有人声称某件事情是一个错误时,这意味着它是可以重新生产的。你没有重现这个错误的方式,声称它 "第一次 "发生,不管那是什么意思,并且没有提供代码来排除代码不是问题。谁会去追踪这个问题呢?
更不用说数以百万计的人使用这个软件,每天进行天知道有多少百万次的交易;你是唯一发生这种情况的人。相信我,当涉及到钱的时候,如果这种情况发生在每个人身上(很少),我们在这个论坛上还会经常听到这样的事情。很多人来到这里哭诉bug,99%的时候问题都出在他们的代码上。一旦我不再指责别人,我就能更快地解决我所有的编码问题。
Ps:RaptorUK并不代表MetaQuotes,他只是一个社会版主,他的意见和你/我的意见一样重要。为什么这不可能是经纪人 的问题?在其他人开始报告你的这个错误 之前,我想举证的责任在你身上。
你真的认为我这么天真,在账户中拥有不止一个EA,然后把这作为一个问题报告?
正如我之前所说,主要的证据是,日志标签有订单,但专家标签没有*。这简直是不可能的,一个EA正在发送订单,但专家选项卡却没有报告它!这是不可能的。
我可以在这里同时发布专家日志和日志,但由于隐私原因,我不可能这么做。但我认为这没有必要。如果你相信我可以阅读这两个文件并告诉你它们说了什么,那么请相信,假命令包含在日志中,而不包含在专家日志中,所以它根本不是由任何专家发起的。当然,它也不是由我发起的。
我确实希望得到您的支持,但这是为了我们所有用户的利益。如果你认为根本没有错误,Metaquotes会花更多时间来承认这个错误。
我觉得有义务与你分享这一点,我希望Metaquotes至少能做一些检查。
正如我所说的 ......以前也有过这样的情况(我找过帖子和我的回复,但找不到了),而且OP也假设是MT4的问题。
如果你没有发布调查的证据,也没有发布重现问题的方法,你怎么能指望别人来调查和帮助呢?你担心什么隐私问题? 你可以编辑/删除(搜索和替换)你的账户号码 ......你不需要发布整个日志,只要从EA开始到重复订单出现的时间足够了。
写一个小的脚本来询问历史记录中的订单,看看它是否有一个神奇的号码,你的EA是否使用了一个神奇的号码,你可以做一些事情来调查。你会想知道这个问题是否是你或你所运行的EA造成的,你和其他人都想知道是否是MT4造成的。 这掌握在你手中,你有信息,我们没有。
ubzen和RaptorUK。非常感谢你们的回答。
ubzen,你说的很有道理。"更不用说数以百万计的人使用这个软件,每天进行上帝知道的数百万次交易;你是唯一一个发生这种情况的人。"我无法回答这个反对意见。我在几个账户上运行了相当多的EA,我已经看到这种情况发生了3次,在2个不同的经纪商平台上建立了500。然而,由于我已经看到了证据本身,我不怀疑它,即使数以百计或数以千计的人还没有说话。
尽管如此,当你说 "当有人声称某事是一个bug时,这意味着它是可重复生产的",我不得不说你错了。最困难的错误恰恰是那些用户无法重现的错误。它们很少发生,而且正如软件巨头们所知,它们可能需要花费大量的时间和精力来追踪。它们很少发生,因为它们需要一套明确的条件,而这套条件并不总是在用户的控制之下。任何广泛使用像微软办公室这样的东西的人都可以证明这一点。
RaptorUK,感谢你提供的省略个人数据的文件。我将在这个窗口张贴它们,省略我的个人详细资料。(ubzen:我不认为举证责任在我身上,因为我没有必要证明什么,但我想给你看,以防有人感兴趣)。
2013.06.11的专家日志。
22:32:05 专家顾问 1 EURCHF,M15: 买入订单的要求开盘价。1.2307
22:32:07 专家顾问 1 EURCHF,M15: open #20212520 buy 0.01 EURCHF at 1.2307 sl: 1.2232 tp: 1.2320 ok
2013.06.11的日记日志。
05:14:12 '0000': 登录
05:14:30 '0000': 登录
05:14:31 '0000': 之前从201.141.75.152进行的成功授权
08:10:12 '0000': 登录
08:10:17 '0000': 登录
08:10:19 '0000': 之前从201.141.75.152进行的成功授权
20:33:35 '0000': 登录
20:33:43 '0000': 数据中心连接失败 [2] 。
20:33:44 '0000': 之前从201.141.75.152进行的成功授权
22:32:06 '0000': 即时订单在1.2307买入0.01 EURCHF sl: 1.2232 tp: 1.2320
22:32:07 '0000': 服务器已接受请求
22:32:07 '0000': 请求正在进行中
22:32:07 '0000': 订单被打开。#20212520买入0.01 EURCHF at 1.2307 sl: 1.2232 tp: 1.2320
22:32:08 '0000': 即时订单买入 0.01 EURCHF at 1.2307 sl: 1.2232 tp: 1.2320
22:32:08 '0000': 服务器已接受请求
22:32:08 '0000': 请求正在进行中
22:32:10 '0000': 订单被打开。#20212521买入0.01 EURCHF at 1.2307 sl: 1.2232 tp: 1.2320
23:07:26 '0000': 一键式交易已被启用
23:07:31 '0000': 关闭订单#20212521买入0.01 EURCHF at 1.2307 sl: 1.2232 tp: 1.2320 at price 1.2291
23:07:32 '0000': 服务器已接受请求
23:07:32 '0000': 请求正在进行中
23:07:32 '0000': 订单#20212521在1.2307买入0.01 EURCHF sl: 1.2232 tp: 1.2320 以1.2291的价格关闭
你可以看到,20212520号订单是由专家发起的。但是,20212521号订单不是。这个假的订单是手动关闭的(日志文件的最后5行对应的是手动操作)。
我在这里是多余的,但我还是要说。由于假订单20212521没有在专家日志中报告,它不是由任何专家发起的,所以专家的代码与此目的无关。
Ricardo1:
...
正如你所看到的,20212520号订单是由专家发起的。然而,20212521号订单不是。这个假的订单是手动关闭的(日志文件的最后5行对应的是手动操作)。
我在这里是多余的,但我还是要说。由于假订单20212521没有在专家日志中报告,它不是由任何专家发起的,所以专家的代码与此目的无关。
你的EA是否使用了一个神奇的数字?
如果是,那么你可以检查 你的 "假 "订单是否有一个神奇的数字。你可以在历史标签中看到:滚动窗口看到订单,然后将鼠标放在这个订单上(不点击),一定会有一个工具提示显示,如:"您的订单有魔数吗?
#20212521, id 12345
如果没有神奇的数字,那么id字段就会丢失。
22:32:06 '0000': 即时订单在1.2307买入0.01 EURCHF sl: 1.2232 tp: 1.2320
22:32:07 '0000': 请求被服务器接受。
22:32:07 '0000': 请求正在进行中
22:32:07 '0000': 订单被打开。#20212520买入0.01 EURCHF at 1.2307 sl: 1.2232 tp: 1.2320
22:32:08 '0000': 即时订单买入 0.01 EURCHF at 1.2307 sl: 1.2232 tp: 1.2320
22:32:08 '0000': 服务器已接受请求
22:32:08 '0000': 请求正在进行中
22:32:10 '0000': 订单被打开。#20212521 在1.2307买入0.01 EURCHF sl: 1.2232 tp: 1.2320
正如你所看到的,订单20212520是由专家发起的。但是,20212521号订单却不是。
我看到的是EA开了一个订单,一秒钟后它又开了一个。不是说两个包一起出去了。
在OrderSend前后放一个打印语句,证明 你在调用它两次。
你的EA是否使用一个神奇的数字?
如果是,那么你可以检查你的 "假 "订单是否有一个神奇的数字。你可以在历史标签中看到:滚动窗口看到订单,然后将鼠标放在这个订单上(不点击),一个工具提示一定会显示出来,类似于 。
#20212521, id 12345
如果没有神奇的数字,那么id字段就会丢失。
虚假订单中的一切都与原始订单相同,包括评论和神奇数字。然而,EA并没有发送它;正如我所说,专家日志证明了这一点。
各地的MT4交易账户正在发生一些尴尬的事情(据我所知,任何经纪商都可能发生这种情况)。该平台有时(尽管很少)会重复专家发送的订单。
我 看到这种情况在MT4构建500时至少发生过3次。前两次是在模拟账户上,最后一次,也就是昨天,是在一个真实账户 上。问题已经发生了。
1)在不同的MT4系统上。
2)在不同的电脑上。
3)使用不同的经纪商。
4)使用不同的专家顾问。
除了上述所有情况,告诉我这是终端的问题的事实是非常容易验证的。当重复订单发生时。
1)它紧接着合法订单发生,手数、符号和注释完全相同。
2)第一个操作,像往常一样,显示在专家标签和日志标签上。然而,重复的操作显示在日志上,但它没有显示在专家标签上。这是一个可靠的证据,证明该副本不是由专家发送的。
我敦促Metaquotes尽快解决这个问题。昨天我不得不手动关闭重复的操作,我损失了钱,虽然不是太多。但这个问题真的会对自动账户造成严重破坏。
请如果你们中的任何一个人看到了这个问题,请报告,以便我们有更多的证据,并迅速修复相应的错误。