Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 7 additions & 8 deletions orderbook/orderbook.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import sys
import math
from collections import deque # a faster insert/pop queue
from six.moves import cStringIO as StringIO
Expand Down Expand Up @@ -29,7 +28,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':
Expand All @@ -38,7 +37,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):
Expand Down Expand Up @@ -109,7 +108,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):
Expand Down Expand Up @@ -143,7 +142,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):
Expand All @@ -158,7 +157,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:
Expand All @@ -175,7 +174,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)
Expand All @@ -190,7 +189,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()
Expand Down