def openOrder(self, orderId: OrderId, ib_contract: Contract, ib_order: IBOrder, orderState: OrderState): super().openOrder(orderId, ib_contract, ib_order, orderState) if ib_order.orderType.upper() == 'STP': execution_style = StopOrder(ib_order.auxPrice) elif ib_order.orderType.upper() == 'MKT': execution_style = MarketOrder() else: error_message = "Order Type is not supported: {}".format( ib_order.orderType) self.logger.error(error_message) raise ValueError(error_message) if ib_order.action.upper() == 'SELL': quantity = -ib_order.totalQuantity elif ib_order.action.upper() == 'BUY': quantity = ib_order.totalQuantity else: error_message = "Order Action is not supported: {}".format( ib_order.action) self.logger.error(error_message) raise ValueError(error_message) if ib_order.tif.upper() == 'DAY': time_in_force = TimeInForce.DAY elif ib_order.tif.upper() == 'GTC': time_in_force = TimeInForce.GTC elif ib_order.tif.upper() == 'OPG': time_in_force = TimeInForce.OPG else: error_message = "Time in Force is not supported: {}".format( ib_order.tif) self.logger.error(error_message) raise ValueError(error_message) try: ticker = self.contract_ticker_mapper.contract_to_ticker( IBContract.from_ib_contract(ib_contract)) order = Order(ticker=ticker, quantity=quantity, execution_style=execution_style, time_in_force=time_in_force, order_state=orderState.status) order.id = int(orderId) self.order_list.append(order) except ValueError as e: self.logger.error( f"Open Order for contract {ib_contract} will be skipped due to the following error " f"during parsing: \n{e}")
def openOrder(self, orderId: OrderId, ib_contract: IBContract, ib_order: IBOrder, orderState: OrderState): contract = Contract(ib_contract.symbol, ib_contract.secType, ib_contract.exchange) if ib_order.orderType.upper() == 'STP': execution_style = StopOrder(ib_order.auxPrice) elif ib_order.orderType.upper() == 'MKT': execution_style = MarketOrder() else: error_message = "Order Type is not supported: {}".format( ib_order.orderType) self.logger.error(error_message) raise ValueError(error_message) if ib_order.action.upper() == 'SELL': quantity = -ib_order.totalQuantity elif ib_order.action.upper() == 'BUY': quantity = ib_order.totalQuantity else: error_message = "Order Action is not supported: {}".format( ib_order.action) self.logger.error(error_message) raise ValueError(error_message) if ib_order.tif.upper() == 'DAY': time_in_force = TimeInForce.DAY elif ib_order.tif.upper() == 'GTC': time_in_force = TimeInForce.GTC elif ib_order.tif.upper() == 'OPG': time_in_force = TimeInForce.OPG else: error_message = "Time in Force is not supported: {}".format( ib_order.tif) self.logger.error(error_message) raise ValueError(error_message) order = Order(contract=contract, quantity=quantity, execution_style=execution_style, time_in_force=time_in_force, order_state=orderState.status) order.id = int(orderId) self.order_list.append(order)