0

我一直在努力让括号顺序表现得只能为父级传递自动过期参数(goodTillDate)。在括号定单代码中传递它时,它会将其添加到限制和停止中,这违背了括号定单的目的。我还希望能够为每个括号确定两个限制。任何人都有任何代码可以反映括号订单的父/子关系和 OCO 功能,但带有单独的订单?一个父母,三个孩子(我们的目标获利者有两个限制,一个停止)?

4

2 回答 2

0

这个问题的答案迟到了......我遇到了同样的问题并找到了解决方案,并得到了一点帮助,但我仍然想分享,因为我花了数周时间来解决这个问题。

我放置括号顺序的旧代码如下所示:

order = ib.bracketOrder('BUY', amount, limit, takeprofit, stoploss, outsideRth=True, tif='GTC')    
for ord in order:
    ib.placeOrder(contract, ord)

这将为所有 3 个订单(父订单和 2 个子订单)下一个括号订单,其中 TIF(有效时间)设置为 GTC(在取消之前有效)。

当我将其更改为 TIF=GTD 并指定时间时,这当然适用于整个括号顺序。因此,如果它在所需时间填写,则在 GTD 时间到期后,止盈和止损将消失。不好。

然后,有人给了我一些帮助,现在这段代码对我有用:

bracket = ib.bracketOrder('BUY', amount, limit, takeprofit,stoploss, outsideRth=True)

gtddelta = (datetime.now() + timedelta(seconds=45)).strftime("%Y%m%d %H:%M:%S")
bracket.parent.tif = 'GTD'
bracket.parent.goodTillDate = gtddelta
    
for order in bracket:
    ib.placeOrder(contract, order)

这为父订单设置了 45 秒的 GTD。如果没有成交,整个括号定单将被取消。如果它被执行,止盈和止损订单仍然存在,TIF=GTC。

请注意旧代码的更改。调用第一个变量“bracket”以便以后能够定义“bracket.parent”是很重要的(查看定义)。

于 2021-11-01T11:27:34.653 回答
0

首先,您提交带有传输标志为 False 的父代,然后为每个子代指定 parentId 并提交带有传输为 True 的最后一个订单。

对于两个限制,您只需拆分订单并提交边。或者,您可以尝试有条件的订单,指定时间。

父母过世了,孩子们怎么活?除非你的意思是部分填充。

于 2020-05-15T03:28:58.643 回答