贸易交易时 - 页 7

 
fxsaber:

同意。但不幸的是,在MT5中,与MT4不同,交易环境可能与现实不符。例如,当一个挂单被执行几毫秒时,它可能不在任何地方。而在这里,即使是OnTradeTransaction 也无济于事。

也许,根据我的理解,OnTrade是在交易的基础上在终端本身产生的。

或者,你的意思是,当一个挂单在OnTrade处理程序中触发时,不能检测到新的未结头寸?

 
Aleksey Mavrin:

也许是OnTrade,据我所知,它是在终端本身根据交易产生的。

或者你是说,当挂单被触发时,一个新的未结头寸可以在OnTrade处理程序中不被察觉?

在任何On-function中。在这个意义上,MT5有一个漏洞。他们不太可能给它打补丁。

 
fxsaber:

在任何On函数中。在这个意义上,MT5有一个漏洞。他们不太可能给它打补丁。

如果是这样,那就很不幸了。它实际上失去了OnTrade的意义。我们将不得不检查。理想情况下,当订单被触发时,OnTrade应该被调用大约多少次。

为止。

- 创建并发送一个市场订单

- 待处理的订单已被移至历史

- 订单已被执行,交易已被记录

- 该市场订单已被移至历史

- 设立的职位

为限价单。

- 激活限价单的书面交易

- 待定订单已被移入历史

- 职位已被设立

假设是后者,应该已经有了一个位置,而不是以前的位置,按理说不应该有,是吧?

我在OnTrade中调用函数来检查所有的交易状态--交易、头寸和订单。到目前为止,一切似乎都很正常,但我还没有太复杂的交易

 
fxsaber:

我为什么要来论坛,有那么多的问题没有解决))

谢谢,我会研究的。到目前为止,我已经读到了突出的那个,这不是一个问题,而是一个特点。在数据库中,以及在一般情况下,交易的概念和意味着所有的

执行查询和维护数据库的正确性所必需的工作已经完成,在事务可以与数据库一起工作后,将不会出现错误。

如果有任何动作(为了向任何表格中写入一行,有时需要做多个动作,并确保前面的动作成功完成)。

更改被回滚,交易被拒绝。我想说的是,也许,你不应该从MT中期待DBMS的水平:)

在这里,所有的中间操作都必须被观察和检查,同样在某个地方,它给出了更多的灵活性。

但在我看来一切都很好--首先,服务器说订单已经完成,终端将其删除到档案中,然后(后来)服务器说它开了一个头寸,由于某些错误可能无法打开,那么它应该是零点的。

我将检查并详细报告结果。

 
Aleksey Mavrin:

但一切对我来说都是有意义的--服务器首先报告订单被执行,终端将其删除到档案中,然后(稍后)服务器报告说它开了一个头寸

该命令不在历史上,也不在当前的命令中。而且没有任何立场。也就是说,什么都没有。

 
Aleksey Mavrin:

但一切对我来说都是有意义的--服务器首先报告说订单被执行,终端将其删除到档案中,然后(后来)服务器报告说它开了一个头寸,但可能由于某些错误而没有开,那么它应该是零点。

我不能说在这个论坛或其他我读过管理员Renat的帖子的地方(可能是快速论坛),但似乎他写道,订单在服务器上经过的唯一检查是提供保证金要求,然后订单通过连接器 "飞 "到交易所,然后订单执行的不确定性,原则上是可以的,服务器不知道订单在什么价格执行

 
除了fxsaber给出的例子外,在实践中还有一种情况,即在订单和未结头寸 之间都有票据。这种情况也会持续几毫秒(不过在最新的构建中没有检查到)。检查机制一定是不同的,所以要提前做好准备:)
 
Igor Zakharov:
除了fxsaber给出的例子,在实践中,有一种情况是订单和开仓 之间都有票据。这种情况也会持续几毫秒(虽然在最新的版本中没有检查)。检查机制应该是不同的,所以要事先做好准备:)

这种情况的处理方式是,对于MT4的EA,在MT5中一切都与MT4相同。但对于幻影订单--我们需要把它写下来。

 

在 "正常 "机器人上,也就是我所描述的情况,我完全没有注意到;但在一个案例中,我被要求做一个安全系统:条件是头寸总是被锁定(要么是真实头寸,要么是挂单),也就是说,买入手数等于卖出手数。就是这个案例让我认识到了五角大楼中订单/位置/交易计数的细微差别。

我对自己的解释是:区别在于,四号机在得到经纪人的答复时,首先将其 "表 "与未结订单和历史记录同步,然后通知用户经纪人的答复。 五号机立即将这个答复广播给我们,同时纠正其 "表"(所有mql程序从这些 "表 "中读取数据)。这就是我们在毫秒计时器上捕捉到的时刻。但是,为什么我们不在测试器中抓住它呢?

总的来说,我已经忍受了......。