从理论到实践 - 页 227

 
Maxim Dmitrievsky:

因为你必须先检查交易执行的结果,然后再检查订单总数。

作者有几个相同的EA异步工作,每个人都在自己的对子图上,显然,彼此之间没有沟通。因此,可能会出现这样的情况:一个EA发送了一个开仓指令,但还没有得到回应,也就是说,这个仓位还没有打开(OrdersTotal()==0)。然后另一个EA(可能不止一个)也发出了交易请求,结果是2个或更多的仓位同时开仓。我们的想法是,为了避免这种重叠,我们应该设置一个标志 终端的全局变量),并在其他智能交易系统发送第一个交易订单时读取它。

但这种情况可能会经常发生,特别是在新闻上,许多货币对几乎同步进行大幅跳水。

 
Alexander Sevastyanov:

作者有几个同类型的EA,每一个都在自己的对子图上,显然,它们之间没有交流。因此,可能会有这样的情况:一个EA发送了交易订单开仓,而订单正在处理中,或者还没有得到回应,也就是说,仓位还没有打开(OrdersTotal()==0)。然后另一个EA(也许不止一个)也发出了交易请求,结果是2个或更多的头寸同时打开。我们的想法是,为了避免这种重叠,我们应该设置一个标志 终端的全局变量),并在其他智能交易系统发送第一个交易订单时读取它。

这些情况可能会再次发生,特别是在许多货币对大幅跳水的消息上。

我没有看到规定一次只能有1笔交易,我以为1个符号应该有几个开口。

 
Alexander Sevastyanov:

作者有几个同类型的EA,每个都在自己的对子图上,显然,它们之间没有交流。因此,可能会有这样的情况:一个EA发送了交易订单开仓,而订单正在处理中,或者还没有得到回应,也就是说,仓位还没有打开(OrdersTotal()==0)。然后另一个EA(也许不止一个)也发出了交易请求,结果是2个或更多的头寸同时打开。我们的想法是,为了避免这种问题,我们应该设置一个标志 终端的全局变量),并在其他智能交易系统发送第一个交易订单时读取它。

这正是它的特点,亚历山大。

我现在正在仔细阅读该分支和所有修复这个问题的建议。因为我很害怕,如果所有32个交易对的交易都同时开启,会发生什么事情......。当然,它不应该是这样的。

 
Alexander_K2:

......现在正在读这个主题,以及所有关于解决这个问题的建议。因为我不敢想如果所有32个货币对的交易同时开启会发生什么......。当然,它不应该是这样的。

如果你需要帮助,请毫不犹豫地与我联系。

顺便说一下,开仓的延迟主要是由双重ping(来回)和服务器处理交易订单的时间组成的。好的经纪商不会使真正的服务器过载,并与流动性提供者有良好的连接渠道,其交易订单的处理时间以毫秒为单位。通过在VPS 服务器上托管专家顾问,平移可以从数百毫秒大幅减少到单位。你可以在MT4日志中看到发送交易订单、处理订单和从服务器获得响应的总时间。

 
Alexander Sevastyanov:

如果你需要任何帮助,请毫不犹豫地与我们联系。

哦,顺便说一下,开仓的延迟主要是由双倍的ping(往返)和服务器处理时间构成的。好的经纪商不会使真正的服务器过载,并与流动性提供者有良好的连接渠道,其交易订单的处理时间以毫秒为单位。通过在VPS 服务器上托管专家顾问,平移可以从数百毫秒大幅减少到单位。你可以在MT4日志中看到发送交易订单、处理订单和从服务器获得响应的总时间。

在外汇中没有这样的经纪人,最低几十毫秒,平均200,在零ping的情况下。

 
Maxim Dmitrievsky:

我没有看到规定一次只能有1个交易,我以为1个工具应该有几个开口。

如果前一个线程还没有执行完毕,而新的tick已经到来,那么这个bug甚至可能在一个符号中发生--那么就会出现实际数据的读写的未定义情况......
 
Andrei:
如果前一个线程还没有执行完毕,而新的勾选又来了,那么这个错误很可能会发生,甚至对于一个单一的工具来说也是如此--那么就会出现一个未定义的写入和读取实际数据的情况。

不,不存在这种情况,它跳过刻度,直到所有的逻辑都被处理。

 
Maxim Dmitrievsky:

不,不存在这种情况,本体跳过刻度,直到所有的逻辑都被处理。

我也是这么想的...。

 
Andrei:

我也在想同样的事情...

我不知道,从来没有发生过,在MT4和MT5上与一堆剥头皮的经纪商交易过。

 
Maxim Dmitrievsky:

我不知道,从来没有,在MT4和MT5上与一堆剥头皮的经纪商交易过。

你是如何检查的?我只在mt4上检查过...