def _start(self, app_context, **kwargs): self.ib_config = app_context.app_config.get_config(IBConfig) self.next_request_id = self.ib_config.next_request_id self.next_order_id = self.ib_config.next_order_id self.tws = swigibpy.EPosixClientSocket(self) self.port = self.ib_config.port self.client_id = self.ib_config.client_id self.account = self.ib_config.account self.ref_data_mgr = self.app_context.ref_data_mgr self.data_event_bus = self.app_context.event_bus.data_subject self.execution_event_bus = self.app_context.event_bus.execution_subject self.model_factory = IBModelFactory(self.app_context.ref_data_mgr) if not self.tws.eConnect("", self.port, self.client_id, poll_auto=False): raise RuntimeError('Failed to connect TWS') if self.ib_config.use_gevent: gevent.spawn(self.poll) else: thread = threading.Thread(target=self.poll) thread.daemon = self.ib_config.daemon thread.start() if self.account: self.__req_acct_update() else: self.tws.reqManagedAccts() self.tws.reqAllOpenOrders() self.tws.reqOpenOrders()