From 69815d1695286887a8f74f44389af1682437042d Mon Sep 17 00:00:00 2001 From: Dale Jung Date: Tue, 24 Feb 2015 23:32:28 -0500 Subject: [PATCH] PRF: limit the subset of orders we check for bookkeeping --- zipline/finance/blotter.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/zipline/finance/blotter.py b/zipline/finance/blotter.py index 98e91420..807e8495 100644 --- a/zipline/finance/blotter.py +++ b/zipline/finance/blotter.py @@ -205,19 +205,20 @@ class Blotter(object): lambda o: o.dt <= trade_event.dt, orders) + processed_orders = [] for txn, order in self.process_transactions(trade_event, current_orders): + processed_orders.append(order) yield txn, order - # update the open orders for the trade_event's sid - updated_orders = \ - [order for order - in self.open_orders[trade_event.sid] - if order.open] + # remove closed orders. we should only have to check + # processed orders + not_open = lambda order: not order.open + closed_orders = filter(not_open, processed_orders) + for order in closed_orders: + orders.remove(order) - if updated_orders: - self.open_orders[trade_event.sid] = updated_orders - else: + if len(orders) == 0: del self.open_orders[trade_event.sid] def process_transactions(self, trade_event, current_orders):