def get_and_submit_broker_order_for_contract_order(self, contract_order, limit_price = None, order_type = "market"): log = contract_order.log_with_attributes(self.data.log) broker = self.get_broker_name() broker_account = self.get_broker_account() broker_clientid = self.get_broker_clientid() side_prices, mid_prices = self.get_benchmark_prices_for_contract_order_by_leg(contract_order) broker_order = create_new_broker_order_from_contract_order(contract_order, order_type=order_type, side_price=side_prices, mid_price=mid_prices, broker=broker, broker_account=broker_account, broker_clientid=broker_clientid, limit_price=limit_price) log.msg("Created a broker order %s (not yet submitted or written to local DB)" % str(broker_order)) placed_broker_order_with_controls = self.\ submit_broker_order(broker_order) if placed_broker_order_with_controls is missing_order: log.warn("Order could not be submitted") return missing_order log = placed_broker_order_with_controls.order.log_with_attributes(log) log.msg("Submitted order to IB %s" % str(placed_broker_order_with_controls.order)) return placed_broker_order_with_controls
def get_and_submit_broker_order_for_contract_order_as_market_order_with_quantity( self, contract_order, qty): log = log_attributes_from_contract_order(self.data.log, contract_order) broker = self.get_broker_name() broker_account = self.get_broker_account() broker_clientid = self.get_broker_clientid() # Check market closed? side_price, mid_price = self.check_market_conditions_for_contract_order( contract_order) broker_order = create_new_broker_order_from_contract_order( contract_order, qty, order_type="market", side_price=side_price, mid_price=mid_price, algo_comment="market order", broker=broker, broker_account=broker_account, broker_clientid=broker_clientid) submitted_broker_order = self.\ submit_broker_order(broker_order) if submitted_broker_order is missing_order: return missing_order return submitted_broker_order
def get_and_submit_broker_order_for_contract_order_as_market_order_with_quantity( self, contract_order, qty): log = contract_order.log_with_attributes(self.data.log) broker = self.get_broker_name() broker_account = self.get_broker_account() broker_clientid = self.get_broker_clientid() side_price, mid_price = self.check_market_conditions_for_contract_order( contract_order) broker_order = create_new_broker_order_from_contract_order( contract_order, qty, order_type="market", side_price=side_price, mid_price=mid_price, algo_comment="market order", broker=broker, broker_account=broker_account, broker_clientid=broker_clientid) log.msg( "Created a broker order %s (not yet submitted or written to local DB)" % str(broker_order)) submitted_broker_order = self.\ submit_broker_order(broker_order) if submitted_broker_order is missing_order: log.warn("Order could not be submitted") return missing_order log = submitted_broker_order.log_with_attributes(log) log.msg("Submitted order to IB %s" % submitted_broker_order) return submitted_broker_order
def get_and_submit_broker_order_for_contract_order( self, contract_order, input_limit_price=None, order_type="market", limit_price_from="input", ticker_object=None): log = contract_order.log_with_attributes(self.data.log) broker = self.get_broker_name() broker_account = self.get_broker_account() broker_clientid = self.get_broker_clientid() if ticker_object is None: ticker_object = self.get_ticker_object_for_order(contract_order) ticker_object, collected_prices = self.get_market_data_for_order( ticker_object, contract_order) if collected_prices is missing_order: # no data available, no can do return missing_order if order_type == "limit": limit_price = self.set_limit_price( collected_prices.side_price, collected_prices.offside_price, limit_price_from=limit_price_from, input_limit_price=input_limit_price) else: limit_price = None broker_order = create_new_broker_order_from_contract_order( contract_order, order_type=order_type, side_price=collected_prices.benchmark_side_prices, mid_price=collected_prices.benchmark_mid_prices, broker=broker, broker_account=broker_account, broker_clientid=broker_clientid, limit_price=limit_price) log.msg( "Created a broker order %s (not yet submitted or written to local DB)" % str(broker_order)) placed_broker_order_with_controls = self.\ submit_broker_order(broker_order) if placed_broker_order_with_controls is missing_order: log.warn("Order could not be submitted") return missing_order log = placed_broker_order_with_controls.order.log_with_attributes(log) log.msg("Submitted order to IB %s" % str(placed_broker_order_with_controls.order)) placed_broker_order_with_controls.add_or_replace_ticker(ticker_object) return placed_broker_order_with_controls