如果/当第一个订单被执行(填充)时,如何输入新订单? [MQL5]

时间:2017-08-14 21:37:54

标签: metatrader4 forex mql5

我是MQL5中的新手。

我有一个EA先购买一个股票(让我们说PETR4)然后购买另一个股票(让我们说ABEV3)。

唯一的问题是我只能在第一个执行时订购第二个(不仅放置)。

我使用 MqlTradeResult.retcode 来获取退货编号,但这只显示订单是否已下达,我需要知道订单是否已经填写才能继续第二次行动。

任何人都可以帮助我吗? 感谢

1 个答案:

答案 0 :(得分:1)

此类指示应在PositionSelect()电话中编码:

第一次打电话 的 if ( PositionSelect( "PETR4" ) ) { ... /* further work will go here */}

  

这会选择一个开放的 位置 ,以便进一步使用它。如果函数成功完成,则返回True。如果失败,则返回False

如果针对给定符号报告了任何有效位置,则进一步的工作将在{...} - 代码块

内进行

隐藏的魔法事实上,任何符号要么 位置 或根本没有即可。这使逻辑的其余部分清晰。

  

执行交易操作会导致 位置 开启,其数量和/或方向发生变化或消失。交易操作基于订单执行,由OrderSend()函数以交易请求的形式发送。对于每个金融证券(符号),只有一个未平仓头寸是可能的。一个位置有一组可供 PositionGet...() 功能阅读的属性   ...
  的 POSITION_TICKET
  分配给每个新打开的 位置 的唯一编号。它通常与用于打开位置的订单的票证相匹配,除非由于服务器上的服务操作而改变票证,例如,当重新打开位置时进行交换。要查找用于开仓的订单,请应用POSITION_IDENTIFIER属性。

     

POSITION_TICKET值对应MqlTradeRequest::position