modified do not order guard to take an iteratble or a container

container allows for dynamic restrictions, necessary for a
point in time implementation of the restricted list.
This commit is contained in:
fawce
2015-01-28 22:16:29 -05:00
parent 52f78fcbc7
commit 909b412e9b
2 changed files with 11 additions and 4 deletions
+5 -3
View File
@@ -958,17 +958,19 @@ class TestTradingControls(TestCase):
def test_set_do_not_order_list(self):
# set the restricted list to be the sid, and fail.
algo = SetDoNotOrderListAlgorithm(sid=self.sid,
algo = SetDoNotOrderListAlgorithm(
sid=self.sid,
restricted_list=[self.sid])
def handle_data(algo, data):
algo.order(self.sid, 100)
algo.order_count += 1
self.check_algo_fails(algo, handle_data, 0)
# set the restricted list to exclude the sid, and succeed
algo = SetDoNotOrderListAlgorithm(sid=self.sid,
algo = SetDoNotOrderListAlgorithm(
sid=self.sid,
restricted_list=[134, 135, 136])
def handle_data(algo, data):
+6 -1
View File
@@ -106,9 +106,14 @@ class RestrictedListOrder(TradingControl):
"""
def __init__(self, restricted_list):
"""
restricted list can be an iterable, or
an object that implements __contains__ for dynamic
restrictions.
"""
super(RestrictedListOrder, self).__init__()
self.restricted_list = set(restricted_list)
self.restricted_list = restricted_list
def validate(self,
sid,