¿Cómo obtener el precio y la comisión de negociación en Interactive Brokers (IBPY) después de realizar un pedido?

http://interactivebrokers.github.io/tws-api/ tal vez un enlace útil. Esta imagen es de la guía API de Java de Interacitve Brokers y los números que quiero son el precio y la comisión en el registro comercial.

from ib.opt import Connection, message from ib.ext.Contract import Contract from ib.ext.Order import Order from ib.ext.CommissionReport import CommissionReport from ib.ext.TickType import TickType as tt 

Haga funciones para manejar cada tipo de callback que le interesa.

 def error_handler(msg): print (msg) def execDetails(msg): print('ID',msg.execution.m_execId,'PRICE',msg.execution.m_price) def commReport(msg): print('ID',msg.commissionReport.m_execId,'COM',msg.commissionReport.m_commission) tws = Connection.create(port = 4001, clientId=123) tws.register(execDetails, message.execDetails) tws.register(commReport, message.commissionReport) tws.register(error_handler, 'Error') tws.connect() 

Debería esperar a que finalice connect() . Normalmente, solo uso la siguiente callback de OrderDid para avisarme cuando esté listo, pero en Python puede dormir (2) o en este caso estoy usando el cuaderno, así que solo ejecuto las siguientes celdas más tarde.

 fx = Contract() fx.m_secType = "CASH" fx.m_symbol = "USD" fx.m_currency = "CAD" fx.m_exchange = "IDEALPRO" #tws.reqMktData(1,fx,"",False) ord = Order() ord.m_orderType = 'MKT' ord.m_totalQuantity = 100000 ord.m_action = 'SELL' tws.placeOrder(123,fx,ord) #increment this every order 

Esto imprime

 ID 0001f4e8.57427bd9.01.01 PRICE 1.31565 ID 0001f4e8.57427bd9.01.01 COM 2.6313` 

No olvides tws.disconnect() en algún momento