私は、取引が問題なく処理される紙の取引 IB アカウントを使用しています。満たされていない注文がいくつかあります。「updateAccountValue」は期待どおりに機能しますが、「con.register(acct_update, message.reqAllOpenOrders())」は何もせず、「con.reqOpenOrders()」も行いません。どちらもエラーを発生させません。IB ドキュメントによると、3 つすべてがメソッドは 'void' であり、値が返されないことを意味すると理解していますが、前述のように、「updateAccountValue」メソッドは完全に正常に機能し、適切な出力を提供します。
質問 1: (未履行の) オープン注文に関するデータを取得するにはどうすればよいですか?
また、コードが常に実行されるとは限らないことにも気付きましたが、TWS ワークステーション アプリケーションを (再) 起動した直後には常に適切に実行されます。
質問 2: このコードが起動されるたびに実行されないのはなぜですか?
from ib.opt import ibConnection, message
import sys
def acct_update(msg):
print msg
con = ibConnection(clientId=100)
con.register(acct_update,
message.updateAccountValue)
con.register(acct_update,
message.reqAllOpenOrders())
con.connect()
con.reqAccountUpdates(True,'DU000000')
con.reqAllOpenOrders()
con.reqOpenOrders()
sys.exit()