OrderSendAsync()函数 - 页 5

 
Urain:

如果你的建议只是补充一个现有的功能,那么就没有什么,否则就不清楚一个简单的MqlPacketTradeRequest结构是如何...

...如果MqlPacketTradeRequest结构是MqlTradeRequest结构的 动态数组的结构,它可能会打破整个服务器淹没在简单查询结构中的逻辑。

否则,在终端层面,我们将不得不把这个数据包分割成不同的请求,这将否定引入这个重载的全部意义。

似乎我们因为异步结构而 "同意 "了这样一个变体。

bool  OrderSendAsync(
   MqlPacketTradeRequest&  packet_request,      // пакетная структура запроса
   );

在哪里?

packet_request将包括一个MqlTradeRequest 结构的数组...。

那么所有这些想法都是讨论的原始材料 :-)

 
Urain:

我认为,一批相同的应用只需要用于示范目的,在工作中会使用不同的符号,不同的体积,当然还有不同的方向。因此,每个申请者都必须单独检查,所以批量发送没有意义

好吧,你必须在这里做出选择。一次性启动函数OrderSendPacketAsync(MqTradeRequest& request[], MqlPacketTradeResult& packet_result),每次 发送500个元素的预填充数组request[], 并一次性检查 返回代码10008,或者OrderSendAsync()函数的 500次启动 ,并 返回代码10008进行500次检查
Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
Торговые функции / OrderSend - Документация по MQL5
 
Urain:

...如果MqlPacketTradeRequest结构是MqlTradeRequest结构的 动态数组的结构,就会破坏整个服务器的逻辑,而服务器是为简单查询结构设计的。

一个使用动态数组的交易请求怎么会 "破坏服务器的逻辑"?如果我有一个块,它处理某种类型的结构的变量,那么什么能阻止我将这个块应用于同一类型的数组的每个元素?同样,如果现在的服务器是 "适用于简单的查询结构",有什么能阻止我添加一个循环,当服务器接受由OrderSendPacketAsync()函数发送的动态数组时,它将允许依次对这样一个数组的每个元素应用一个 "适用于简单查询结构 "的块?
 
papaklass:

在我看来,OrderSendAsync()函数应该被做成参数化,而不是为发送订单创建一个循环。例如,OrderSendAsync(Symbol(), number, direction)。作为参数: - 符号, -订单 的数量, - 订单的方向(买入,卖出)。

这类似于使用动态数组和OrderSendPacketAsync() 函数发送大量交易请求的特殊情况,此时"符号 "和 "类型 " 字段对动态数组的每个元素 都是相同的。
 

在进行异步交易时,我们并不确切知道任何特定请求是如何被触发的。特别是,我们不知道当其中一个异步请求被部分执行时,有多少量是未完成的。

你能告诉我,如果我理解正确的话,无论是在外汇交易还是在股票交易中,订单都来自于历史属性

订单量_当前

未填写的数量

允许我们毫不含糊地确定一个异步请求是如何完全执行的?也就是说,当一个市场订单在外汇市场上被异步发送时,当它出现在历史记录中时,我们可以确定,如果ORDER_VOLUME_CURRENT==0.0,则该订单已经被完全执行,但如果ORDER_VOLUME_CURRENT包含一个非零值,则该值应被视为该外汇市场订单的未完成量,这是否正确

这个问题是由以下事实引起的:这里:https://www.mql5.com/ru/forum/3775/page28#comment_84851,强调ORDER_VOLUME_CURRENT 属性是指在股票市场上使用的订单

 

关于历史上出现的异步请求的问题。

OrderSendAsync() 返回true,并且result.retcode字段包含10008,那么根据Reference,它 "意味着请求被发送,但并不保证它到达交易服务器"。

问题:如果一个异步请求被终端成功发送,但没有到达服务器,这样的请求会一直在历史中结束吗?换句话说,会不会出现这样的情况:一个异步请求被成功地(根据所有迹象)发送到服务器,但有关它的信息不会出现在历史中?如果这种情况是可能的,在什么条件下?

Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
Торговые функции / OrderSend - Документация по MQL5
 
Yedelkin:

问题:如果一个异步请求被终端成功发送,但没有到达服务器,这样的请求信息会一直出现在历史中吗?换句话说,会不会出现这样的情况:一个异步请求被成功地发送到服务器(在所有方面),但关于它的信息却没有出现在历史中?如果这种情况是可能的,在什么条件下?
如果请求没有到达服务器,它就没有机会出现在客户终端。
 
Renat:
如果请求没有到达服务器,它就没有机会出现在客户终端。
哎呀!事实证明,一个成功发送的异步请求 很容易丢失,不会出现在历史上。
Документация по MQL5: Торговые функции / OrderSendAsync
Документация по MQL5: Торговые функции / OrderSendAsync
  • www.mql5.com
Торговые функции / OrderSendAsync - Документация по MQL5
 
Yedelkin:
哎呀!事实证明,一个成功发送的异步请求 很容易丢失,不能进入历史。
不。
 
Yedelkin:
事实证明,一个成功发送的 异步请求 很容易丢失,不能进入历史。

问题是,异步请求实际上没有 "成功发送 "的状态。

成功完成该功能仅意味着 "从客户的角度看订单是正确的,并被扔进了网络管道,等待OnTrade的答复"。