OrderSendAsync()函数 - 页 2

 
hrenfx:

应该澄清一下。

OrderSend的TRADE_RETCODE_PLACED是服务器响应。

OrderSendAsync的TRADE_RETCODE_PLACED是终端响应。

虽然这些代码是相同的,但它们有相当不同的含义。开发人员很可能会修复这个模糊不清的问题。

这就是为什么你应该理解它。

必须在适当的背景下理解。

那么请解释在什么条件下,当使用OrderSend函数发送交易请求 时,服务器必须返回TRADE_RETCODE_PLACED代码?因为根据OrderSendAsync函数的注释和Roche的回答,这个非常TRADE_RETCODE_PLACED代码只表示从终端向服务器成功发送了一个请求。因此,事实证明,一旦请求到达服务器并开始处理/验证,服务器将被迫 "根据处理结果 "生成其他 "真正 "的服务器代码。所以我不太明白为什么服务器(即服务器)必须返回TRADE_RETCODE_PLACED代码,如果这个代码是指请求的生命阶段,在请求出现在服务器上之前?还是TRADE_RETCODE_PLACED代码与OrderSend功能有关,具有其他意义?
 

OrderSend可以同时收到来自服务器和终端的响应(以防终端过滤失败)。

OrderSendAsync 总是只从终端接收响应。为了从服务器接收响应,你需要在onTrade中捕捉适当的事件。

 
hrenfx:

OrderSend可以同时收到来自服务器和终端的响应(以防终端过滤失败)。

我是否正确理解了以下想法。

终端已经检查了来自OrderSend的请求,并成功地将其发送到服务器,retcode收到的中间值为TRADE_RETCODE_PLACED。在这一点上,连接被中断,OrderSend 所能返回的是TRADE_RETCODE_PLACED代码卡在retcode字段中?这是否就是OrderSend返回TRADE_RETCODE_PLACED的例子?

 
Yedelkin:

我对以下的想法是否正确。

终端已经检查了来自OrderSend的请求,并成功将其发送到服务器,retcode收到中间值TRADE_RETCODE_PLACED。在这一点上,连接被中断,OrderSend 所能返回的是TRADE_RETCODE_PLACED代码卡在retcode字段中?当OrderSend返回TRADE_RETCODE_PLACED时,这是否就是那个例子?

也许是这样,但我怀疑。最有可能的是通过TimeOut-time对这种通信中断进行TRADE_RETCODE_TIMEOUT。

老实说,我不明白,就 "命令发送 "而言,这种削弱是为了什么。也许开发者会在帮助中作出更多解释。

P.S. 我没有在MQL5中写过一行字。因此,我对这个问题的所有想法都可以忽略不计。

 

......不过,这也是无稽之谈。客户端用户指南(2012年1月)说,其中一个订单阶段是 "设置(放置)--经销商接受订单 "阶段。

也就是说,根据手册,订单在交易请求的生命阶段发出信号,此时它已经成功到达服务器。而OrderSendAsync()函数 的描述正好相反:TRADE_RETCODE_PLACED代码不依赖于对服务器的到达。

 
hrenfx:

说实话,我不明白为什么在OrderSend的情况下需要这种书呆子气。

就个人而言,我喜欢需要 "返回代码处理 "的想法。但为了正确地写出这种处理,必须知道它是怎么回事。我一直试图了解TRADE_RETCODE_PLACED 代码到底与什么有关。
 

一般来说,任何人都可以通过OrderSendAsync编写一个串行的MyOrderSend。

  1. 调用了OrderSendAsync
  2. 在onTrade中等待服务器的适当回应。
  3. 退出MyOrderSend,有此回应。

有了这个实现,MyOrderSend将与常规的OrderSend完全相同(通过常规库中的OrderSendAsync实现,可以简单地从API中删除)。

 
hrenfx:

有了这个实现,MyOrderSend将与常规的OrderSend完全相同(通过在常规库中实现OrderSendAsync,可以简单地从API中消除它)。

一个有趣的自我发展的想法。但是,只要onTrade没有被参数化,在员工库中使用onTrade的任何检查可能会比OrderSend函数 本身慢很多。我可能是错的。
Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
Торговые функции / OrderSend - Документация по MQL5
 

一般来说,OrderSendAsync 输入是Metatrader的一个历史事件。在交易API存在的所有时间里(从Metatrader3开始(我没有看到更早的))。Metatrader,尽管通过自己的语言实现,但它在本质上几乎没有变化。OrderSendAsync是Metaquotes对交易API的第一个实质性改变。

我真诚地祝贺开发者的这一事件,并希望将异步模式带到足够的功能中去!"。

 

技术信息。将有趣的言论收集到一个主题中。

Renat:

请注意,现在和将来都会对一个账户 执行队列中的同时订单 数量进行限制。如果我没有弄错的话,现在是16个申请。

异步操作将小心翼翼地与 "可接受订单数量的窗口 "一起工作,在发送下一个批次之前,等待前一个批次的一部分被执行。此外,还将有针对愚蠢/测试洪水的保护措施。到目前为止,当允许的应用程序数量溢出时,会收到一个错误。

通过OrderSendAsync进行异步操作的新方法解决了主要问题--它允许即时执行一打操作。这是一个非常强大的工具,应该谨慎使用,并始终关注被服务器和经纪人禁止的可能性。