From 940ddd22d3807621f29b6a7dbe61493f0f4d5f8c Mon Sep 17 00:00:00 2001 From: Thomas Wiecki Date: Wed, 17 Jul 2013 19:56:55 -0400 Subject: [PATCH] TST: Added testing of order timings and price. --- tests/test_algorithm.py | 10 +++++++++- zipline/test_algorithms.py | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/tests/test_algorithm.py b/tests/test_algorithm.py index 5c56b074..63d0cf6e 100644 --- a/tests/test_algorithm.py +++ b/tests/test_algorithm.py @@ -20,7 +20,8 @@ import numpy as np from zipline.utils.test_utils import setup_logger import zipline.utils.factory as factory from zipline.test_algorithms import (TestRegisterTransformAlgorithm, - RecordAlgorithm) + RecordAlgorithm, + TestOrderAlgorithm) from zipline.sources import (SpecificEquityTrades, DataFrameSource, DataPanelSource) @@ -164,3 +165,10 @@ class TestTransformAlgorithm(TestCase): ) self.assertEqual(algo.data_frequency, 'minute') self.assertEqual(algo.annualizer, 10) + + def test_orders_executed(self): + algo = TestOrderAlgorithm( + sim_params=self.sim_params, + data_frequency='daily' + ) + algo.run(self.df) diff --git a/zipline/test_algorithms.py b/zipline/test_algorithms.py index cd0916ce..e8b2586b 100644 --- a/zipline/test_algorithms.py +++ b/zipline/test_algorithms.py @@ -216,6 +216,25 @@ class RecordAlgorithm(TradingAlgorithm): self.incr += 1 self.record(incr=self.incr) + +class TestOrderAlgorithm(TradingAlgorithm): + def initialize(self): + self.incr = 0 + self.sale_price = None + + def handle_data(self, data): + print data[0] + if self.incr == 0: + assert 0 not in self.portfolio.positions + else: + assert self.portfolio.positions[0]['amount'] == \ + self.incr, "Orders not filled immediately." + assert self.portfolio.positions[0]['last_sale_price'] == \ + data[0].price, "Orders not filled at current price." + self.incr += 1 + self.order(0, 1) + + from zipline.algorithm import TradingAlgorithm from zipline.transforms import BatchTransform, batch_transform from zipline.transforms import MovingAverage