Skip to content

Raise an exception instead of quitting #7

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
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