2016-10-21 3 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 - это то, что печатает командная строка для этих команд ... означает, что ничего не случилось, я думаю.

Смежные вопросы