如何跟踪执行中的 parent/child 笔交易

How to track parent/child trades in executions

我正在使用市价单退出未平仓交易,但无法将退出与进入关联起来。在此示例中,我将使用订单 208 退出订单 201 并通过 m_parentid 进行链接。

entry_orderid_ = 201

order = IBOrder()
order.m_orderId = 208
order.m_orderType = 'MKT'
order.m_totalQuantity = 1

order.m_action = "SELL"
order.m_transmit = True

order.m_parentid = entry_orderid_


log.info("Placing market exit order. {} {} {}.".format(order.m_action, 1, 'ES'))
print '.....placing order..'
try:
    app.con.placeOrder(order.m_orderId, self.contract, order)
except Exception, e:
    print e

这执行成功但在执行方法中我无法跟踪父子关系


ex = msg.execution

parent_order = ex.m_parentid

这导致异常。它还允许我多次退出条目。我认为它不会让人关闭已经关闭的交易。我想我的问题是如何跟踪 parent-child/entry 并通过执行退出?

属性拼写错误,m_parentId 而不是 m_parentid。不幸的是现在有一个新问题。 IB 找不到要绑定的订单

 ERROR - Error: <error id=1094, errorCode=135, errorMsg=Can't find order with id #

您没有正确使用 parentId。它适用于父订单将触发子订单的其他类型的订单。

int ParentId [get, set] The order ID of the parent order, used for bracket and auto trailing stop orders.

例如。 https://interactivebrokers.github.io/tws-api/bracket_order.html

您似乎也在使用 ibpy,IB 提供了更新的 api。 http://interactivebrokers.github.io/#

你不能'link'用api那样买卖订单,你必须自己跟踪。话虽如此,您的声明将显示开仓和平仓,佣金报告将在可能的情况下显示已平仓的交易利润。

您首先发送一个 Transmit=False 的订单,然后为下一个订单设置 parentId 参数(第一个订单的 ID)并使用 Transmit=True 提交。

对于您的需要,您始终可以为订单设置 orderRef 属性并以这种方式跟踪它们。