MAINT: Factored process_transactions out of blotter's process_trade

This commit is contained in:
Richard Frank
2013-11-06 12:25:45 -05:00
committed by Eddie Hebert
parent 3f89904e33
commit 4dbdf45006
+19 -14
View File
@@ -196,16 +196,27 @@ class Blotter(object):
# less frequently than once per minute.
return
if trade_event.sid in self.open_orders:
orders = self.open_orders[trade_event.sid]
orders = sorted(orders, key=lambda o: o.dt)
# Only use orders for the current day or before
current_orders = filter(
lambda o: o.dt <= trade_event.dt,
orders)
else:
if trade_event.sid not in self.open_orders:
return
orders = self.open_orders[trade_event.sid]
orders = sorted(orders, key=lambda o: o.dt)
# Only use orders for the current day or before
current_orders = filter(
lambda o: o.dt <= trade_event.dt,
orders)
for order, txn in self.process_transactions(trade_event,
current_orders):
yield order, txn
# update the open orders for the trade_event's sid
self.open_orders[trade_event.sid] = \
[order for order
in self.open_orders[trade_event.sid]
if order.open]
def process_transactions(self, trade_event, current_orders):
for order, txn in self.transact(trade_event, current_orders):
if txn.type == zp.DATASOURCE_TYPE.COMMISSION:
order.commission = (order.commission or 0.0) + txn.cost
@@ -230,12 +241,6 @@ class Blotter(object):
yield txn, order
# update the open orders for the trade_event's sid
self.open_orders[trade_event.sid] = \
[order for order
in self.open_orders[trade_event.sid]
if order.open]
class Order(object):
def __init__(self, dt, sid, amount, stop=None, limit=None, filled=0,