Exemple #1
0
 def testLimitBuyAboveMarketWithPricePrecedence(self):  # marketable limit order
     new_order = Order(OrderType.Buy, 1.5, 1, OrderConditions.Limit, 1)
     existing_order_1 = Order(OrderType.Sell, 1.6, 1, OrderConditions.Limit, 2)
     existing_order_2 = Order(OrderType.Sell, 1.5, 1, OrderConditions.Limit, 3)
     order_matcher = OrderMatcher(Queue())
     order_matcher.sell_orders.append(existing_order_1)
     order_matcher.sell_orders.append(existing_order_2)
     actual_match = order_matcher.match(new_order)
     self.assertEqual(existing_order_2, actual_match)
Exemple #2
0
 def testMatchBuyMarketSellLimitPricePrecedence(self):
     new_order = Order(OrderType.Buy, -1, 1, OrderConditions.Market, 1)
     existing_order_1 = Order(OrderType.Sell, 1.6, 1, OrderConditions.Limit, 2)
     existing_order_2 = Order(OrderType.Sell, 1.5, 1, OrderConditions.Limit, 3)
     order_matcher = OrderMatcher(Queue())
     order_matcher.sell_orders.append(existing_order_1)
     order_matcher.sell_orders.append(existing_order_2)
     expected_match = existing_order_2
     actual_match = order_matcher.match(new_order)
     self.assertEqual(actual_match, expected_match)
Exemple #3
0
 def testLimitBuyAtMarket(self):
     new_order = Order(OrderType.Buy, 1.5, 1, OrderConditions.Limit, 1)
     existing_order_1 = Order(OrderType.Sell, 1.5, 1, OrderConditions.Limit, 2)
     existing_order_2 = Order(OrderType.Sell, 1.6, 1, OrderConditions.Limit, 3)
     order_matcher = OrderMatcher(Queue())
     order_matcher.sell_orders.append(existing_order_1)
     order_matcher.sell_orders.append(existing_order_2)
     actual_match = order_matcher.match(new_order)
     expected_match = existing_order_1
     self.assertEqual(expected_match, actual_match)
Exemple #4
0
 def testBuyMatchMarketOrdersTimePrecedence(self):
     new_order = Order(OrderType.Sell, -1, 1, OrderConditions.Market, 1)
     existing_order_1 = Order(OrderType.Buy, -1, 1, OrderConditions.Market, 2)
     existing_order_2 = Order(OrderType.Buy, -1, 1, OrderConditions.Market, 3)
     order_matcher = OrderMatcher(Queue())
     order_matcher.buy_orders.append(existing_order_1)
     order_matcher.buy_orders.append(existing_order_2)
     expected_match = existing_order_1
     actual_match = order_matcher.match(new_order)
     self.assertEqual(actual_match, expected_match)
Exemple #5
0
 def testLimitSellAboveMarket(self):
     new_order = Order(OrderType.Sell, 1.7, 1, OrderConditions.Limit, 1)
     existing_order_1 = Order(OrderType.Buy, 1.5, 1, OrderConditions.Limit, 2)
     existing_order_2 = Order(OrderType.Buy, 1.6, 1, OrderConditions.Limit, 3)
     order_matcher = OrderMatcher(Queue())
     order_matcher.buy_orders.append(existing_order_1)
     order_matcher.buy_orders.append(existing_order_2)
     expected_match = None
     actual_match = order_matcher.match(new_order)
     self.assertEqual(actual_match, expected_match)
Exemple #6
0
 def testMatchBuyLimitSellMarketOverLimitEvenWithTimePrecedenceAndSamePrice(self):
     new_order = Order(OrderType.Buy, 1.5454, 1, OrderConditions.Limit, 1)
     existing_order_1 = Order(OrderType.Sell, 1.5454, 1, OrderConditions.Limit, 2)
     existing_order_2 = Order(OrderType.Sell, -1, 1, OrderConditions.Market, 3)
     order_matcher = OrderMatcher(Queue())
     order_matcher.sell_orders.append(existing_order_1)
     order_matcher.sell_orders.append(existing_order_2)
     expected_match = existing_order_2
     actual_match = order_matcher.match(new_order)
     self.assertEqual(actual_match, expected_match)
Exemple #7
0
 def testLimitBuyAtMarket(self):
     new_order = Order(OrderType.Buy, 1.5, 1, OrderConditions.Limit, 1)
     existing_order_1 = Order(OrderType.Sell, 1.5, 1, OrderConditions.Limit,
                              2)
     existing_order_2 = Order(OrderType.Sell, 1.6, 1, OrderConditions.Limit,
                              3)
     order_matcher = OrderMatcher(Queue())
     order_matcher.sell_orders.append(existing_order_1)
     order_matcher.sell_orders.append(existing_order_2)
     actual_match = order_matcher.match(new_order)
     expected_match = existing_order_1
     self.assertEqual(expected_match, actual_match)
Exemple #8
0
 def testBuyMatchMarketOrdersTimePrecedence(self):
     new_order = Order(OrderType.Sell, -1, 1, OrderConditions.Market, 1)
     existing_order_1 = Order(OrderType.Buy, -1, 1, OrderConditions.Market,
                              2)
     existing_order_2 = Order(OrderType.Buy, -1, 1, OrderConditions.Market,
                              3)
     order_matcher = OrderMatcher(Queue())
     order_matcher.buy_orders.append(existing_order_1)
     order_matcher.buy_orders.append(existing_order_2)
     expected_match = existing_order_1
     actual_match = order_matcher.match(new_order)
     self.assertEqual(actual_match, expected_match)
Exemple #9
0
 def testLimitSellAboveMarket(self):
     new_order = Order(OrderType.Sell, 1.7, 1, OrderConditions.Limit, 1)
     existing_order_1 = Order(OrderType.Buy, 1.5, 1, OrderConditions.Limit,
                              2)
     existing_order_2 = Order(OrderType.Buy, 1.6, 1, OrderConditions.Limit,
                              3)
     order_matcher = OrderMatcher(Queue())
     order_matcher.buy_orders.append(existing_order_1)
     order_matcher.buy_orders.append(existing_order_2)
     expected_match = None
     actual_match = order_matcher.match(new_order)
     self.assertEqual(actual_match, expected_match)
Exemple #10
0
 def testLimitBuyAboveMarketWithPricePrecedence(
         self):  # marketable limit order
     new_order = Order(OrderType.Buy, 1.5, 1, OrderConditions.Limit, 1)
     existing_order_1 = Order(OrderType.Sell, 1.6, 1, OrderConditions.Limit,
                              2)
     existing_order_2 = Order(OrderType.Sell, 1.5, 1, OrderConditions.Limit,
                              3)
     order_matcher = OrderMatcher(Queue())
     order_matcher.sell_orders.append(existing_order_1)
     order_matcher.sell_orders.append(existing_order_2)
     actual_match = order_matcher.match(new_order)
     self.assertEqual(existing_order_2, actual_match)
Exemple #11
0
 def testMatchBuyLimitSellMarketOverLimitEvenWithTimePrecedence(self):
     new_order = Order(OrderType.Buy, 1.5454, 1, OrderConditions.Limit, 1)
     existing_order_1 = Order(OrderType.Sell, 1.5353, 1,
                              OrderConditions.Limit, 2)
     existing_order_2 = Order(OrderType.Sell, -1, 1, OrderConditions.Market,
                              3)
     order_matcher = OrderMatcher(Queue())
     order_matcher.sell_orders.append(existing_order_1)
     order_matcher.sell_orders.append(existing_order_2)
     expected_match = existing_order_2
     actual_match = order_matcher.match(new_order)
     self.assertEqual(actual_match, expected_match)
Exemple #12
0
 def testMatchBuyMarketSellLimitPricePrecedence(self):
     new_order = Order(OrderType.Buy, -1, 1, OrderConditions.Market, 1)
     existing_order_1 = Order(OrderType.Sell, 1.6, 1, OrderConditions.Limit,
                              2)
     existing_order_2 = Order(OrderType.Sell, 1.5, 1, OrderConditions.Limit,
                              3)
     order_matcher = OrderMatcher(Queue())
     order_matcher.sell_orders.append(existing_order_1)
     order_matcher.sell_orders.append(existing_order_2)
     expected_match = existing_order_2
     actual_match = order_matcher.match(new_order)
     self.assertEqual(actual_match, expected_match)
Exemple #13
0
 def consumer(self):
     order_matcher = OrderMatcher(self.output)
     order_matcher.start(self.q)