OrderSendAsync()函数 - 页 4

 

同事们,你们对这个想法有什么看法?在这样的结构(MqlPacketTradeResult)中,你可以写一个字段,表明完成的订单数量等。


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

同事们,你们对这个想法有什么看法?在这样的结构(MqlPacketTradeResult)中,你可以写一个字段,表明完成的 订单数量等。

但要做到这一点,我们必须在OrderSendAsync()函数中等待服务器的响应。而OrderSendAsync()函数的 异步性将化为乌有。Renat已经承诺,在OrderSendAsync()被触发后,会有其他函数可以用来尝试捣乱。
 
Yedelkin:
Но для этого придётся дожидаться ответа от сервера в рамках функции OrderSendAsync(). И асинхронность функции OrderSendAsync() сойдёт на нет. Ренат же уже пообещал, что будут иные функции, с помощью которых можно попытаться похимичить после срабатывания OrderSendAsync().

是的,我还没有想到异步 性...

那就这样吧。

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

bool  OrderReceiveAsync(
   MqlPacketTradeResult&   packet_result        // пакетная структура ответа
   );
 
denkir:

是的,我还没有想到异步 性...

好了,在这里。

异步的意思是工作时不需要等待响应。发射(OrderSenAsync)并运行,不尝试看目标是否被击中。因为没有时间了。

间接反应是稍后会有声音传来(OnTrade)--也许是射中了目标,也许是有东西掉下来了。如果你愿意,你可以在这里看一看(检查所有的订单、交易、仓位等)。

 
denkir:

是的,我还没有想到异步 性...

那就这样吧。

那么,已经有OrderSendPacketAsync()、OrderReceivePacketAsync :)这样,在已经存在的异步模式下,仍然可以发送一个单一的请求,并在事后寻找相关信息。
 
Rosh:

间接的答案是后来才有的声音(OnTrade)--也许是射中了目标,也许是有东西刚刚落下。如果你愿意,可以在这里查看(查看所有订单、交易、头寸等)。

因此,他建议在OnTrade()中使用一些函数OrderReceiveXXX(),使我们不对所有传入的贸易事件做出反应,而只对那些属于异步队列的事件做出反应。
 
Rosh:

异步的意思是工作时不需要等待响应。发射(OrderSenAsync)并运行,而不去尝试是否击中目标。因为没有时间了。

间接的答案是后来的声音(OnTrade)--可能是射中了目标,或者是有东西掉下来了。如果你愿意,可以在这里查看(查看所有订单、交易、头寸等)。

你错了,要么是因为你对异步模式的交易经验不足,要么是因为MT5对这种操作的功能较弱。

你不需要为了异步而异步。而且只有在有利可图时才会使用。例如,在交易一个投资组合时,当投资组合需要在此刻买入或重新平衡时。换句话说,在当前价格下,有十几个不同符号的交易订单

如果你以你所描述的方式对待异步,没有人会这么做--拍摄和忘记。而对射门的反应应在当前净头寸的基础上进行评估。反应应该是针对每个交易订单的。

如果有重定向,我们应该被告知,或者我们应该得到另一个回应。我们不应该怀疑是否有重新出价,因为净头寸没有一两秒的变化。

在这个讨论的第一页,有图表和传入的信息事件。他们并不是凭空出现的,而是有多年的异步经验。因此,值得注意的是这种建筑,不要畏首畏尾。

 
denkir:

同事们,你们对这个想法有什么看法?在这样的结构(MqlPacketTradeResult)中,你可以写一个字段,表明完成的订单数量等。

你假设这批订单总是有相同的字段?

我认为一批相同的请求只需要用于示范目的,因为工作中会用到不同人物的请求,有不同的量,当然还有不同的方向。因此,每个申请者都必须被单独检查,所以批量发送是没有意义的。

而你所假设的只是for循环的一个绑定。

 
Urain:

你是说,一叠申请书总是填写相同的字段吗?

IMHO,一批相同的应用程序只需要用于示范目的,具有不同字符、不同体积和当然不同方向的应用程序将用于工作。因此,每个申请者都必须被单独检查,所以批量发送是没有意义的。

而你所假设的只是for循环的一个绑定。

又是什么原因使你不能循环地填补每个申请 然后一样循环地 ,处理每个结果
 
denkir:
是什么阻止了他们周期性地填补每个申请者 然后一样循环地 ,处理每个结果

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

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

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

否则,在终端层面上,我们将不得不把这个批处理分成不同的请求,这就使引入这个过载的全部意义失效了。

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5