【问题标题】:IBpy getting order status updateIBpy 获取订单状态更新
【发布时间】:2016-10-21 22:57:57
【问题描述】:

我想获取我之前订单的状态。我有以下简单的代码,但我只得到 True/False 值。这是我的代码:

from ib.opt import Connection, message

tws_conn = Connection.create(port=7497, clientId=999)
tws_conn.connect()

def acct_update(msg):
    print msg  

tws_conn.register(acct_update, message.openOrder)
tws_conn.register(acct_update, message.orderStatus)

这是输出:

>>> from ib.opt import Connection, message
>>> 
>>> tws_conn = Connection.create(port=7497, clientId=999)
>>> tws_conn.connect()
Server Version: 76
TWS Time at connection:20161021 18:53:42 EST
True
>>> 
>>> def acct_update(msg):
...     print msg  
... 
>>> tws_conn.register(acct_update, message.openOrder)
True
>>> tws_conn.register(acct_update, message.orderStatus)
True
>>> 
>>> 

如何获取未结订单列表?以及如何获取单个订单的状态?

谢谢。

【问题讨论】:

    标签: python interactive-brokers ibpy


    【解决方案1】:

    你忘了问!添加一行tws_conn.reqOpenOrders() 以获取订单。您将看到 openOrder 和 orderStatus 回调。您可能需要添加一行 tws_conn.register(acct_update, message.openOrderEnd) 以了解您何时完成获取 openOrders。我从来没有测试过,像往常一样人们在周五晚上问这些问题;)

    如果您想要所有客户和交易平台下的订单,请使用tws_conn.reqAllOpenOrders()

    这是刚刚在 TWS (clientId = 0) 中下达的订单的示例,但显然几天内不会成交。

    <openOrder orderId=0, contract=<ib.ext.Contract.Contract object at 0x00000000041FA0F0>, order=<ib.ext.Order.Order object at 0x00000000043FF080>, orderState=<ib.ext.OrderState.OrderState object at 0x00000000043FF5C0>>

    <orderStatus orderId=0, status=PreSubmitted, filled=0, remaining=1, avgFillPrice=0.0, permId=1905611953, parentId=0, lastFillPrice=0.0, clientId=0, whyHeld=None>

    <openOrderEnd>

    请注意,有一个 API 设置“在连接时下载未结订单”,但它不可靠,最好自己跟踪订单并要求执行。看...如果在您未连接的情况下完成了订单,那么它就不再是未结订单,您将不会得到它。

    true 正是命令行为这些命令打印的内容...意味着我猜没有出错。

    【讨论】:

      猜你喜欢
      • 2014-09-06
      • 2017-07-16
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      相关资源
      最近更新 更多