'Mark the given order as \'rejected\', which is functionally similar to
cancelled. The distinction is that rejections are involuntary (and
usually include a message from a broker indicating why the order was
rejected) while cancels are typically user-driven.'

def reject(self, order_id, reason=''):

    if (order_id not in self.orders):
        return
    cur_order = self.orders[order_id]
    order_list = self.open_orders[cur_order.asset]
    if (cur_order in order_list):
        order_list.remove(cur_order)
    if (cur_order in self.new_orders):
        self.new_orders.remove(cur_order)
    cur_order.reject(reason=reason)
    cur_order.dt = self.current_dt
    self.new_orders.append(cur_order)
