def test_init(self): # Test for init validation with self.assertRaises(ValueError): Timeout(-1.0) with self.assertRaises(ValueError): Timeout("1")
def test_cancel_order(self): # test for cancel order order = self.order_manager.create_ask_order( AssetPair(AssetAmount(100, 'BTC'), AssetAmount(10, 'MC')), Timeout(0)) self.order_manager.cancel_order(order.order_id)
def update_ticks(self, ask_order_dict, bid_order_dict, traded_quantity): """ Update ticks according to a TrustChain block containing the status of the ask/bid orders. :type ask_order_dict: dict :type bid_order_dict: dict :type traded_quantity: int """ ask_order_id = OrderId( TraderId(unhexlify(ask_order_dict["trader_id"])), OrderNumber(ask_order_dict["order_number"])) bid_order_id = OrderId( TraderId(unhexlify(bid_order_dict["trader_id"])), OrderNumber(bid_order_dict["order_number"])) self._logger.debug( "Updating ticks in order book: %s and %s (traded quantity: %s)", str(ask_order_id), str(bid_order_id), str(traded_quantity)) # Update ask tick ask_exists = self.tick_exists(ask_order_id) if ask_exists and ask_order_dict["traded"] >= self.get_tick( ask_order_id).traded: tick = self.get_tick(ask_order_id) tick.traded = ask_order_dict["traded"] if tick.traded >= tick.assets.first.amount: self.remove_tick(tick.order_id) self.completed_orders.add(tick.order_id) elif not ask_exists and ask_order_dict["traded"] < ask_order_dict["assets"]["first"]["amount"] and \ ask_order_id not in self.completed_orders: new_pair = AssetPair.from_dictionary(ask_order_dict["assets"]) ask = Ask(ask_order_id, new_pair, Timeout(ask_order_dict["timeout"]), Timestamp(ask_order_dict["timestamp"]), traded=ask_order_dict["traded"]) self.insert_ask(ask) elif not ask_exists and ask_order_dict["traded"] >= ask_order_dict[ "assets"]["first"]["amount"]: self.completed_orders.add(ask_order_id) # Update bid tick bid_exists = self.tick_exists(bid_order_id) if bid_exists and bid_order_dict["traded"] >= self.get_tick( bid_order_id).traded: tick = self.get_tick(bid_order_id) tick.traded = bid_order_dict["traded"] if tick.traded >= tick.assets.first.amount: self.remove_tick(tick.order_id) self.completed_orders.add(tick.order_id) elif not bid_exists and bid_order_dict["traded"] < bid_order_dict["assets"]["first"]["amount"] and \ bid_order_id not in self.completed_orders: new_pair = AssetPair.from_dictionary(bid_order_dict["assets"]) bid = Bid(bid_order_id, new_pair, Timeout(bid_order_dict["timeout"]), Timestamp(bid_order_dict["timestamp"]), traded=bid_order_dict["traded"]) self.insert_bid(bid) elif not bid_exists and bid_order_dict["traded"] >= bid_order_dict[ "assets"]["first"]["amount"]: self.completed_orders.add(bid_order_id)
def setUp(self): yield super(PriceTimeStrategyTestSuite, self).setUp() # Object creation self.ask = Ask( OrderId(TraderId(b'0' * 20), OrderNumber(1)), AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now()) self.ask2 = Ask( OrderId(TraderId(b'1' * 20), OrderNumber(2)), AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now()) self.ask3 = Ask( OrderId(TraderId(b'0' * 20), OrderNumber(3)), AssetPair(AssetAmount(40000, 'BTC'), AssetAmount(200, 'MB')), Timeout(100), Timestamp.now()) self.ask4 = Ask( OrderId(TraderId(b'1' * 20), OrderNumber(4)), AssetPair(AssetAmount(3000, 'A'), AssetAmount(3000, 'MB')), Timeout(100), Timestamp.now()) self.ask5 = Ask( OrderId(TraderId(b'1' * 20), OrderNumber(4)), AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'C')), Timeout(100), Timestamp.now()) self.bid = Bid( OrderId(TraderId(b'0' * 20), OrderNumber(5)), AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now()) self.bid2 = Bid( OrderId(TraderId(b'0' * 20), OrderNumber(6)), AssetPair(AssetAmount(6000, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now()) self.ask_order = Order( OrderId(TraderId(b'9' * 20), OrderNumber(11)), AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now(), True) self.ask_order2 = Order( OrderId(TraderId(b'9' * 20), OrderNumber(12)), AssetPair(AssetAmount(600, 'BTC'), AssetAmount(60, 'MB')), Timeout(100), Timestamp.now(), True) self.bid_order = Order( OrderId(TraderId(b'9' * 20), OrderNumber(13)), AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now(), False) self.bid_order2 = Order( OrderId(TraderId(b'9' * 20), OrderNumber(14)), AssetPair(AssetAmount(6000, 'BTC'), AssetAmount(60, 'MB')), Timeout(100), Timestamp.now(), False) self.order_book = OrderBook() self.price_time_strategy = PriceTimeStrategy(self.order_book)
def bid_order(): return Order(OrderId(TraderId(b'9' * 20), OrderNumber(13)), AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now(), False)
def ask(): return Ask(OrderId(TraderId(b'0' * 20), OrderNumber(1)), AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now())