def import_inst_from_ib(broker, symbol, sec_type='STK', exchange=None, currency=None): try: result = AsyncResult() logger.info("importing symbol %s" % symbol) broker.reqContractDetails(symbol=symbol, sec_type=sec_type, exchange=exchange, currency=currency, callback=result) # broker.reqScannerSubscription(inst_type='STK', location_code='STK.US', scan_code='TOP_PERC_GAIN', above_vol=1000000, callback=callback) logger.info("done %s %s" % (symbol, result.get(timeout=3))) except Exception as e: logger.error("faile to import %s", symbol, e)
def on_ord_cancel_req(self, ord_cancel_req): logger.debug("[%s] %s" % (self.__class__.__name__, ord_cancel_req)) ord_id = self.ord_req_reg.get_ord_id(cl_id=ord_cancel_req.cl_id, cl_ord_id=ord_cancel_req.cl_ord_id) if ord_id: self.tws.cancelOrder(ord_id) else: logger.error( "cannot find old order, cl_id = %s, cl_ord_id = %s" % (ord_cancel_req.cl_id, ord_cancel_req.cl_ord_id))
def on_ord_replace_req(self, ord_replace_req): logger.debug("[%s] %s" % (self.__class__.__name__, ord_replace_req)) existing_ord_req = self.ord_req_reg.get_ord_req(cl_id=ord_replace_req.cl_id, cl_ord_id=ord_replace_req.cl_ord_id) if existing_ord_req: ord_id = self.ord_req_reg.get_ord_id(cl_id=ord_replace_req.cl_id, cl_ord_id=ord_replace_req.cl_ord_id) updated_ord_req = existing_ord_req.update_ord_request(ord_replace_req) self.ord_req_reg.add_ord_req(ord_id, updated_ord_req) ib_order = self.model_factory.create_ib_order(updated_ord_req) contract = self.model_factory.create_ib_contract(updated_ord_req.inst_id) self.tws.placeOrder(ord_id, contract, ib_order) else: logger.error("cannot find old order, cl_ord_id = %s" % ord_replace_req.cl_ord_id)
def error(self, id, errorCode, errorString): logger.error("error, id=%s, errorCode=%s, errorString=%s", id, errorCode, errorString)
def error(self, id, errorCode, errorString): logger.error("error, id=%s, errorCode=%s, errorString=%s", id, errorCode, errorString) self._complete_req(id)