2

我是 MQL5 的新手。

我有一个 EA,它首先购买一只股票(比如 PETR4),然后再购买另一只股票(比如 ABEV3)。

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

我使用MqlTradeResult.retcode来获取退货编号,但这仅显示订单是否已下达,我需要知道订单是否已完成才能继续进行第二次操作。

谁能帮我?谢谢

4

1 回答 1

1

这种指示应该在PositionSelect()调用中编码:

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

这选择了一个空缺职位以进一步使用它。True如果函数成功完成则返回。在失败的情况下返回False

如果给定交易品种报告了任何活动位置,则进一步的工作将在{...}-code-block内进行

隐藏的魔法实际上是任何符号要么只有一个位置,要么根本没有。这使得其余的逻辑一清二楚。

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

POSITION_TICKET值对应MqlTradeRequest::position

于 2017-08-15T06:59:39.587 回答