我是MQL5中的新手。
我有一个EA先购买一个股票(让我们说PETR4)然后购买另一个股票(让我们说ABEV3)。
唯一的问题是我只能在第一个执行时订购第二个(不仅放置)。
我使用 MqlTradeResult.retcode
来获取退货编号,但这只显示订单是否已下达,我需要知道订单是否已经填写才能继续第二次行动。
任何人都可以帮助我吗? 感谢
答案 0 :(得分:1)
PositionSelect()
电话中编码:第一次打电话
的 if ( PositionSelect( "PETR4" ) ) { ... /* further work will go here */}
强>
这会选择一个开放的 位置 ,以便进一步使用它。如果函数成功完成,则返回
True
。如果失败,则返回False
。
如果针对给定符号报告了任何有效位置,则进一步的工作将在{...}
- 代码块
隐藏的魔法事实上,任何符号要么 单位置 ,或根本没有即可。这使逻辑的其余部分清晰。
执行交易操作会导致 位置 开启,其数量和/或方向发生变化或消失。交易操作基于订单执行,由
OrderSend()
函数以交易请求的形式发送。对于每个金融证券(符号),只有一个未平仓头寸是可能的。一个位置有一组可供PositionGet...()
功能阅读的属性 ...
的POSITION_TICKET
强>
分配给每个新打开的 位置 的唯一编号。它通常与用于打开位置的订单的票证相匹配,除非由于服务器上的服务操作而改变票证,例如,当重新打开位置时进行交换。要查找用于开仓的订单,请应用POSITION_IDENTIFIER
属性。
POSITION_TICKET
值对应MqlTradeRequest::position
。