示例#1
0
    def __refresh_order(self, order: Order):
        """
        :param order:               order to refresh

        Refreshes the order if its visible quantity is exhausted.
        If the real quantity is exhausted, removes from the list.
        """

        if order.quantity == 0:
            orders_list = self.__get_orders_list(order)
            orders_list.remove(order)
            if order.hidden_quantity > 0:
                order.timestamp = self.__get_timestamp()
                difference = min(order.peak, order.hidden_quantity)
                order.quantity += difference
                order.hidden_quantity -= difference
                orders_list.add(order)
示例#2
0
    def add(self, order: Order):
        """
        :param order:               order being added to the order book

        Adds an order to the order book.
        Executes all possible transactions if possible
        and then returns the order book state.
        """

        order.timestamp = self.__get_timestamp()
        self.__get_orders_list(order).add(order)
        self.last_transactions.clear()

        while order.quantity > 0:
            matched_order = self.__match_order(order)
            if matched_order:
                self.__make_transaction(order, matched_order)
                self.__refresh_order(order)
            else:
                break