Python 2.7 如何使用IBpy检索未结订单的状态?
我使用的是一个纸面交易IB账户,交易处理得很好。我有许多未完成的订单。“updateAccountValue”按预期执行,而“con.register(acct_update,message.ReqAllowenOrders())”不执行任何操作,“con.reqOpenOrders()”。也不会引发错误。IB文档告诉我这三个方法都是“void”,我理解这意味着不应该返回任何值。但是,如前所述updateAccountValue“方法工作得非常好,提供了正确的输出 问题1:如何检索有关(未填写)未结订单的数据 我还注意到,代码并不总是运行的,但它总是在(重新)启动TWS工作站应用程序之后正确运行 问题2:为什么此代码不是每次启动时都运行Python 2.7 如何使用IBpy检索未结订单的状态?,python-2.7,ibpy,Python 2.7,Ibpy,我使用的是一个纸面交易IB账户,交易处理得很好。我有许多未完成的订单。“updateAccountValue”按预期执行,而“con.register(acct_update,message.ReqAllowenOrders())”不执行任何操作,“con.reqOpenOrders()”。也不会引发错误。IB文档告诉我这三个方法都是“void”,我理解这意味着不应该返回任何值。但是,如前所述updateAccountValue“方法工作得非常好,提供了正确的输出 问题1:如何检索有关(未填写)
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()
注意到区别了吗
con.register(acct_update,
message.updateAccountValue)
con.register(acct_update,
message.reqAllOpenOrders())
您应该使用message.openOrder
此外,您正在将其发送到acct_update回调,但由于它只是打印,这没什么大不了的
您还可以在程序可能有机会完成之前调用exit()。它是异步的,这意味着您必须等待答复。注意到区别了吗
con.register(acct_update,
message.updateAccountValue)
con.register(acct_update,
message.reqAllOpenOrders())
您应该使用message.openOrder
此外,您正在将其发送到acct_update回调,但由于它只是打印,这没什么大不了的
您还可以在程序可能有机会完成之前调用exit()。它是异步的,这意味着您必须等待答复。我正试图找出如何打印所有未结订单。以下是我的发现,可能对您的第一个问题有所帮助
def __str__(self):
return "Action: " + self.m_action + ", Quantity: " + str(self.m_totalQuantity) + ", at price: " + str(self.m_lmtPrice)
在Contract.py中添加:
def __str__(self):
return "secType: " + self.m_secType + ", symbol: " + self.m_symbol + "; expiry: " + self.m_expiry
您可以修改字段以显示要查看的内容
订单状态:2::状态:待处理取消已填写:0剩余:1 avgFillPrice:0.0我正在试图找出如何打印所有未结订单。以下是我发现的内容,可能对您的第一个问题有所帮助
def __str__(self):
return "Action: " + self.m_action + ", Quantity: " + str(self.m_totalQuantity) + ", at price: " + str(self.m_lmtPrice)
在Contract.py中添加:
def __str__(self):
return "secType: " + self.m_secType + ", symbol: " + self.m_symbol + "; expiry: " + self.m_expiry
您可以修改字段以显示要查看的内容
订单状态:2::状态:PendingCancel Filled:0剩余:1 avgFillPrice:0.0Thx作为您的答案。事实上,我现在得到了您描述的答复。第一个逗号后的信息有什么意义吗?抱歉问。同时,我发现我需要使用“con.register(帐户更新,message.orderStatus)”“给我我想要的信息。如果你是说在orderId之后,那么是的。在回调中,您将访问对象,如
msg.contract
等,以获取答案。事实上,我现在得到了你描述的答复。第一个逗号后面的信息有什么意义吗?抱歉问。同时,我发现我需要使用“con.register(acct\u update,message.orderStatus)”来告诉我我想要的信息。如果你的意思是在orderId之后,那么是的。在回调中,您将访问诸如msg.contract
等对象。removesys.exit()
removesys.exit()