MT4打开交易,然后又直接关闭的问题 - 页 5

 
7bit:

目前还不知道是哪种EA造成的。


到目前为止,我们所看到的都是症状和一些理论。我们需要文件夹experts/logs 中的专家日志,来自所有4个终端,涵盖相同的时间跨度,以做出任何进一步的结论。这些日志可以支持或否定我的理论,它们将显示谁在发送平仓指令。

我以为他是在不同的账户/终端上运行每个EA?

//在我重读该主题后,我看到他在4个终端上运行30个EA。

//z.

 
zzuegg:

我以为他是在不同的账户/终端上运行每个EA?

我们需要有多少终端就有多少日志。我记得他提到了4个终端,每个终端运行几个EA。但有多少并不重要,最重要的 是要同时查看所有 终端的日志。

一个由EA1在终端1上打开的交易可能被运行在终端2上的EA2关闭。EA1会立即重新打开交易,EA2会立即再次关闭这个交易,无休止地进行。

终端1的专家日志将充满了关于开仓的条目,终端2的专家日志将充满了关于平仓的条目。在账户历史中,所有的损失都将归咎于EA1,因为它是开仓交易的一方,而EA2将完全保持低调,它的名字在账户历史中不会被提及。只有在它所运行的终端的专家日志中才会提到。


我保证:如果最终找到了违规的EA,它将是唯一没有 受到这一切影响的,唯一似乎一直表现良好的,最不被怀疑的,将是有罪的。

 

有一次,我的一个EA出现了类似的问题,有罪的代码是。

if(Close[1]<Open[1] && Close[2] < Open[2]){
  //CLOSE ALL PROFITALBE BUYS
}

这只发生了一次......我很幸运,我只关闭了盈利的交易......所以我的EA做了100笔交易,并在盈利后立即关闭了它们。

 



这个问题首次发生在2010年5月,影响到一个名为 "Callibre "的EA。

早上醒来时,账户里有一个4000美元的漏洞,而且历史标签要花很长时间才能加载。

我与经纪人交谈,得到了他们的MT4服务器日志的转储(附件)。

此外,还附上了一张显示交易的图表。

服务器日志显示,开仓和平仓的交易来自同一个EA。

当时我指责该EA,认为问题只发生在该EA身上。

*** 从服务器交易日志的评论字段中,我可以知道同一个EA(本例中的Callibre)打开了交易,然后直接关闭了它们。

这个问题消失了4个月,我只是认为是那个EA的问题。

过去几周,这个问题再次出现,涉及4个不同的EA,这些EA已经正常运行了几个月,而且涉及两个不同的经纪商。

这个周末,我将卸载所有的MT4副本,并从头开始重新安装它们。我还将清理专家文件夹,确保我运行的是所有东西的最新副本。

如果有任何其他建议,欢迎提出。
 
 
peterc005:
从服务器交易日志的评论字段中,我可以知道同一个EA(本例中的Callibre)打开了交易,然后直接关闭了它们。

彼得。正如我已经解释过的,评论栏显示的是谁打开了交易,并没有显示谁关闭了 交易。这可能会产生误导和反直觉,这就是你在错误的地方搜索的原因。评论栏是通过OrderSend()函数中的第8个参数设置的。这是当订单被打开时。在这之后,注释字段是固定的,不能再被改变。OrderClose() 不允许指定任何文本信息。无论订单如何关闭或由谁关闭,它都将保持其评论,或在前面加上[sl]或[tp]或其他一些字符串,以表示止损或止盈或部分关闭或追加保证金等。

被OrderClose()关闭的订单将保留其原始注释。唯一能找出谁调用了OrderClose()的地方是在所有 当时运行的终端的专家日志中搜索它。

请附上所有4个终端 的专家日志,这些日志可以在你运行终端的每台机器的experts/logs/ 文件夹中找到(这是每个终端的 "专家 "标签的日志),以找出谁关闭了交易。这不是口径的EA

 

嗨,7bit,我很快就会上传日志。

我在违规的那几天的日志中注意到一件事,就是有很多这样的错误。

00:11:16 内存处理器:无法分配160308896字节的内存

00:11:16 HistoryBase: not enough memory for 'EURGBP1' in AddTick()

谷歌搜索显示,这是由于图表中的条数太多造成的。我把Max Bars 参数设置得很高,这样我可以下载更多的历史记录,但后来我减少了这个设置。

我在想,这些错误是否搞砸了指标信号,导致了EA的问题?

现在,这是我最喜欢的理论!!!。

 
peterc005:

00:11:16 内存处理程序:无法分配160308896字节的内存

00:11:16 HistoryBase: AddTick()中的'EURGBP1'没有足够内存


我不相信这有什么关系。而且它也没有告诉我们究竟是谁调用了OrderClose()。
 
7bit:
我不相信这有什么关系。而且它也没有告诉我们到底是谁调用了OrderClose()。

我仍然怀疑是内存资源的缺乏搞砸了一个指标,导致交易被打开和关闭。如果是这样的话,就很难证明。
 

下面是两个日志文件夹的摘录,是正在发生的事情的一个例子。

这个EA是FAP Turbo LT,我已经运行了很久,一直表现良好。

日志文件夹显示了MT4的操作,即打开并关闭交易,在本例中,交易号为2662451。

奇怪的是,在专家日志文件中,交易被打开,然后被修改为设置SL + TP,但没有记录显示它关闭。

当FAP Turbo工作正常时,我查看了专家日志中的其他记录,这个EA通常肯定会生成一个关闭记录,但在这种情况下没有。

我查看了所有我可以找到的MT4其他实例的日志文件,但没有其他关于这个交易的记录。

MT4/Logs文件夹。

17:28:49 '103028': 订单被打开。#2662451 在1.2909买入0.20 EURUSDFXF sl: 0.0000 tp: 0.0000

17:28:49 '103028': 修改订单 #2662451 buy 0.20 EURUSDFXF at 1.2909 sl: 0.0000 tp: 0.0000 -> sl: 1.2407 tp: 1.2929

17:29:02 '103028': 关闭订单#2662451买入0.20 EURUSDFXF at 1.2909 sl: 1.2407 tp: 1.2929 at price 1.2906

17:29:02 '103028': 请求被服务器接受了


MT4/Experts/Logs文件夹。

17:28:48 FapTurbo50 EURUSDFXF,M5: open #2662451 buy 0.20 EURUSDFXF at 1.2909 ok

17:28:49 FapTurbo50 EURUSDFXF,M5: modify #2662451 buy 0.20 EURUSDFXF at 1.2909 sl: 1.2407 tp: 1.2929 ok