Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 3
0
    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
Esempio n. 4
0
    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