From 50a0e260ec5f0a963287d75cb35f77b63f518a43 Mon Sep 17 00:00:00 2001 From: Guilherme Polo Date: Tue, 3 Jan 2017 17:30:23 -0200 Subject: [PATCH 1/2] raise an exception instead of quitting --- orderbook/orderbook.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/orderbook/orderbook.py b/orderbook/orderbook.py index a0dddfd..b107226 100644 --- a/orderbook/orderbook.py +++ b/orderbook/orderbook.py @@ -29,7 +29,7 @@ def process_order(self, quote, from_data, verbose): self.update_time() quote['timestamp'] = self.time if quote['quantity'] <= 0: - sys.exit('process_order() given order of quantity <= 0') + raise ValueError("quote quantity must be positive") if not from_data: self.next_order_id += 1 if order_type == 'market': @@ -38,7 +38,7 @@ def process_order(self, quote, from_data, verbose): quote['price'] = Decimal(quote['price']) trades, order_in_book = self.process_limit_order(quote, from_data, verbose) else: - sys.exit("order_type for process_order() is neither 'market' or 'limit'") + raise ValueError('invalid order_type "%s", must be "market" or "limit"' % order_type) return trades, order_in_book def process_order_list(self, side, order_list, quantity_still_to_trade, quote, verbose): @@ -109,7 +109,7 @@ def process_market_order(self, quote, verbose): quantity_to_trade, new_trades = self.process_order_list('bid', best_price_bids, quantity_to_trade, quote, verbose) trades += new_trades else: - sys.exit('process_market_order() recieved neither "bid" nor "ask"') + raise ValueError('invalid side "%s", must be "bid" or "ask"' % side) return trades def process_limit_order(self, quote, from_data, verbose): @@ -143,7 +143,7 @@ def process_limit_order(self, quote, from_data, verbose): self.asks.insert_order(quote) order_in_book = quote else: - sys.exit('process_limit_order() given neither "bid" nor "ask"') + raise ValueError('invalid side "%s", must be "bid" or "ask"' % side) return trades, order_in_book def cancel_order(self, side, order_id, time=None): @@ -158,7 +158,7 @@ def cancel_order(self, side, order_id, time=None): if self.asks.order_exists(order_id): self.asks.remove_order_by_id(order_id) else: - sys.exit('cancel_order() given neither "bid" nor "ask"') + raise ValueError('invalid side "%s", must be "bid" or "ask"' % side) def modify_order(self, order_id, order_update, time=None): if time: @@ -175,7 +175,7 @@ def modify_order(self, order_id, order_update, time=None): if self.asks.order_exists(order_update['order_id']): self.asks.update_order(order_update) else: - sys.exit('modify_order() given neither "bid" nor "ask"') + raise ValueError('invalid side "%s", must be "bid" or "ask"' % side) def get_volume_at_price(self, side, price): price = Decimal(price) @@ -190,7 +190,7 @@ def get_volume_at_price(self, side, price): volume = self.asks.get_price(price).volume return volume else: - sys.exit('get_volume_at_price() given neither "bid" nor "ask"') + raise ValueError('invalid side "%s", must be "bid" or "ask"' % side) def get_best_bid(self): return self.bids.max_price() From 61577c89ab333134e60b4761bd267a94dd10d787 Mon Sep 17 00:00:00 2001 From: Guilherme Polo Date: Tue, 3 Jan 2017 17:31:42 -0200 Subject: [PATCH 2/2] removed unused import --- orderbook/orderbook.py | 1 - 1 file changed, 1 deletion(-) diff --git a/orderbook/orderbook.py b/orderbook/orderbook.py index b107226..a486aab 100644 --- a/orderbook/orderbook.py +++ b/orderbook/orderbook.py @@ -1,4 +1,3 @@ -import sys import math from collections import deque # a faster insert/pop queue from six.moves import cStringIO as StringIO