2016-10-21 111 views
2

我想獲取我以前訂單的狀態。我有以下簡單的代碼,但我只獲得True/False值。這裏是我的代碼:IBpy獲取訂單狀態更新

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 
>>> 
>>> 

我怎樣才能打開訂單列表?以及如何獲得單個訂單的狀態?

謝謝。

回答

0

你忘了問!添加一行tws_conn.reqOpenOrders()以獲取訂單。您將看到openOrder和orderStatus回調。您可能想要添加一行tws_conn.register(acct_update, message.openOrderEnd)以瞭解何時完成openOrders。我從來沒有測試過,和往常一樣人會問,上週五晚上這些問題;如果你想放置所有的用戶和交易平臺訂單)

使用tws_conn.reqAllOpenOrders()

下面是從剛放置在交易平臺的訂單樣本(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只是命令行打印這些命令...意味着什麼都沒有出錯我猜。