2016-10-21 10 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の両方のコールバックが表示されます。 openOrdersの取得が完了したら、tws_conn.register(acct_update, message.openOrderEnd)という行を追加するとよいでしょう。 Iという、通常の人々は金曜日の夜にこれらの質問をするように試験したことがありません;)

あなたはすべてのクライアントからの注文をしたいとTWSここ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は、コマンドラインでこれらのコマンドを印刷するだけのものです。何も間違っているとは限りません。

関連する問題