Beispiel #1
0
    def test_from_network(self):
        # Test for from network
        data = StartTransaction.from_network(
            type(
                'Data', (object, ), {
                    "trader_id":
                    TraderId('0'),
                    "transaction_id":
                    TransactionId(TraderId('0'), TransactionNumber(1)),
                    "order_id":
                    OrderId(TraderId('0'), OrderNumber(1)),
                    "recipient_order_id":
                    OrderId(TraderId('1'), OrderNumber(2)),
                    "proposal_id":
                    1235,
                    "assets":
                    AssetPair(AssetAmount(30, 'BTC'), AssetAmount(40, 'MC')),
                    "timestamp":
                    Timestamp(0.0)
                }))

        self.assertEquals(TraderId("0"), data.trader_id)
        self.assertEquals(TransactionId(TraderId("0"), TransactionNumber(1)),
                          data.transaction_id)
        self.assertEquals(OrderId(TraderId('0'), OrderNumber(1)),
                          data.order_id)
        self.assertEquals(OrderId(TraderId('1'), OrderNumber(2)),
                          data.recipient_order_id)
        self.assertEquals(1235, data.proposal_id)
        self.assertEquals(Timestamp(0.0), data.timestamp)
Beispiel #2
0
 def setUp(self):
     # Object creation
     self.proposed_trade = Trade.propose(MessageId(TraderId('0'), MessageNumber('message_number')),
                                         OrderId(TraderId('0'), OrderNumber(1)),
                                         OrderId(TraderId('1'), OrderNumber(2)),
                                         Price(63400, 'BTC'), Quantity(30, 'MC'),
                                         Timestamp(1462224447.117))
Beispiel #3
0
    def from_database(cls, data, payments):
        """
        Create a Transaction object based on information in the database.
        """
        trader_id, transaction_number, order_trader_id, order_number, partner_trader_id, partner_order_number,\
        asset1_amount, asset1_type, asset1_transferred, asset2_amount, asset2_type, asset2_transferred,\
        transaction_timestamp, sent_wallet_info, received_wallet_info, incoming_address, outgoing_address,\
        partner_incoming_address, partner_outgoing_address, match_id = data

        transaction_id = TransactionId(TraderId(str(trader_id)), TransactionNumber(transaction_number))
        transaction = cls(transaction_id,
                          AssetPair(AssetAmount(asset1_amount, str(asset1_type)),
                                    AssetAmount(asset2_amount, str(asset2_type))),
                          OrderId(TraderId(str(order_trader_id)), OrderNumber(order_number)),
                          OrderId(TraderId(str(partner_trader_id)), OrderNumber(partner_order_number)),
                          Timestamp(float(transaction_timestamp)))

        transaction._transferred_assets = AssetPair(AssetAmount(asset1_transferred, str(asset1_type)),
                                                    AssetAmount(asset2_transferred, str(asset2_type)))
        transaction.sent_wallet_info = sent_wallet_info
        transaction.received_wallet_info = received_wallet_info
        transaction.incoming_address = WalletAddress(str(incoming_address))
        transaction.outgoing_address = WalletAddress(str(outgoing_address))
        transaction.partner_incoming_address = WalletAddress(str(partner_incoming_address))
        transaction.partner_outgoing_address = WalletAddress(str(partner_outgoing_address))
        transaction.match_id = str(match_id)
        transaction._payments = payments

        return transaction
Beispiel #4
0
    def from_network(cls, data):
        """
        Restore a declined trade from the network

        :param data: DeclinedTradePayload
        :return: Restored declined trade
        :rtype: DeclinedTrade
        """
        assert hasattr(data, 'trader_id'), isinstance(data.trader_id, TraderId)
        assert hasattr(data, 'message_number'), isinstance(data.message_number, MessageNumber)
        assert hasattr(data, 'order_number'), isinstance(data.order_number, OrderNumber)
        assert hasattr(data, 'recipient_trader_id'), isinstance(data.recipient_trader_id, TraderId)
        assert hasattr(data, 'recipient_order_number'), isinstance(data.recipient_order_number, OrderNumber)
        assert hasattr(data, 'proposal_id'), isinstance(data.proposal_id, int)
        assert hasattr(data, 'timestamp'), isinstance(data.timestamp, Timestamp)
        assert hasattr(data, 'decline_reason'), isinstance(data.decline_reason, int)

        return cls(
            MessageId(data.trader_id, data.message_number),
            OrderId(data.trader_id, data.order_number),
            OrderId(data.recipient_trader_id, data.recipient_order_number),
            data.proposal_id,
            data.timestamp,
            data.decline_reason
        )
Beispiel #5
0
    def test_proposed_trade_cache_timeout(self):
        """
        Test the timeout method of a proposed trade request in the cache
        """
        ask = Ask(
            OrderId(TraderId(self.market_community.mid), OrderNumber(24)),
            Price(63400, 'DUM1'), Quantity(30, 'DUM2'), Timeout(3600),
            Timestamp.now())
        order = Order(OrderId(TraderId("0"), OrderNumber(23)),
                      Price(20, 'DUM1'), Quantity(30, 'DUM2'), Timeout(3600.0),
                      Timestamp.now(), False)
        self.market_community.order_book.insert_ask(ask)
        self.assertEqual(len(self.market_community.order_book.asks), 1)
        self.market_community.order_manager.order_repository.add(order)
        order.reserve_quantity_for_tick(self.proposed_trade.recipient_order_id,
                                        Quantity(30, 'DUM2'))
        self.market_community.order_manager.order_repository.update(order)

        mocked_match_message = MockObject()
        mocked_match_message.payload = MockObject()
        mocked_match_message.payload.matchmaker_trader_id = 'a'
        self.market_community.incoming_match_messages[
            'a'] = mocked_match_message

        def mocked_send_decline(*_):
            mocked_send_decline.called = True

        mocked_send_decline.called = False
        self.market_community.send_decline_match_message = mocked_send_decline

        cache = ProposedTradeRequestCache(self.market_community,
                                          self.proposed_trade, 'a')
        cache.on_timeout()
        self.assertTrue(mocked_send_decline.called)
Beispiel #6
0
    def test_from_network(self):
        # Test for from network
        data = ProposedTrade.from_network(
            type(
                'Data', (object, ), {
                    "trader_id": TraderId('0'),
                    "message_id": MessageId(TraderId('0'), MessageNumber(1)),
                    "order_number": OrderNumber(1),
                    "recipient_order_id": OrderId(TraderId('1'),
                                                  OrderNumber(2)),
                    "proposal_id": 1234,
                    "timestamp": Timestamp(1462224447.117),
                    "price": Price(63400, 'BTC'),
                    "quantity": Quantity(30, 'MC')
                }))

        self.assertEquals(MessageId(TraderId('0'), MessageNumber(1)),
                          data.message_id)
        self.assertEquals(OrderId(TraderId('0'), OrderNumber(1)),
                          data.order_id)
        self.assertEquals(OrderId(TraderId('1'), OrderNumber(2)),
                          data.recipient_order_id)
        self.assertEquals(1234, data.proposal_id)
        self.assertEquals(Price(63400, 'BTC'), data.price)
        self.assertEquals(Quantity(30, 'MC'), data.quantity)
        self.assertEquals(Timestamp(1462224447.117), data.timestamp)
Beispiel #7
0
    def from_network(cls, data):
        """
        Restore a counter trade from the network

        :param data: TradePayload
        :return: Restored counter trade
        :rtype: CounterTrade
        """
        assert hasattr(data, 'trader_id'), isinstance(data.trader_id, TraderId)
        assert hasattr(data, 'message_number'), isinstance(data.message_number, MessageNumber)
        assert hasattr(data, 'order_number'), isinstance(data.order_number, OrderNumber)
        assert hasattr(data, 'recipient_trader_id'), isinstance(data.recipient_trader_id, TraderId)
        assert hasattr(data, 'recipient_order_number'), isinstance(data.recipient_order_number, OrderNumber)
        assert hasattr(data, 'proposal_id'), isinstance(data.proposal_id, int)
        assert hasattr(data, 'price'), isinstance(data.price, Price)
        assert hasattr(data, 'quantity'), isinstance(data.quantity, Quantity)
        assert hasattr(data, 'timestamp'), isinstance(data.timestamp, Timestamp)

        return cls(
            MessageId(data.trader_id, data.message_number),
            OrderId(data.trader_id, data.order_number),
            OrderId(data.recipient_trader_id, data.recipient_order_number),
            data.proposal_id,
            data.price,
            data.quantity,
            data.timestamp
        )
Beispiel #8
0
 def setUp(self):
     # Object creation
     self.trade = Trade(
         MessageId(TraderId('0'), MessageNumber('message_number')),
         OrderId(TraderId('0'), OrderNumber(3)),
         OrderId(TraderId('0'), OrderNumber(4)), 1234,
         Timestamp(1462224447.117))
Beispiel #9
0
class OrderIDTestSuite(unittest.TestCase):
    """Order ID test cases."""

    def setUp(self):
        # Object creation
        self.order_id = OrderId(TraderId("0"), OrderNumber(1))
        self.order_id2 = OrderId(TraderId("0"), OrderNumber(1))
        self.order_id3 = OrderId(TraderId("0"), OrderNumber(2))

    def test_equality(self):
        # Test for equality
        self.assertEquals(self.order_id, self.order_id)
        self.assertEquals(self.order_id, self.order_id2)
        self.assertFalse(self.order_id == self.order_id3)
        self.assertEquals(NotImplemented, self.order_id.__eq__(""))

    def test_non_equality(self):
        # Test for non equality
        self.assertNotEquals(self.order_id, self.order_id3)

    def test_hashes(self):
        # Test for hashes
        self.assertEquals(self.order_id.__hash__(), self.order_id2.__hash__())
        self.assertNotEqual(self.order_id.__hash__(), self.order_id3.__hash__())

    def test_str(self):
        # Test for string representation
        self.assertEquals('0.1', str(self.order_id))
Beispiel #10
0
    def test_from_network(self):
        # Test for from network
        data = ProposedTrade.from_network(
            type(
                'Data', (object, ), {
                    "trader_id":
                    TraderId(b'0'),
                    "order_number":
                    OrderNumber(1),
                    "recipient_order_id":
                    OrderId(TraderId('1'), OrderNumber(2)),
                    "proposal_id":
                    1234,
                    "timestamp":
                    Timestamp(1462224447.117),
                    "assets":
                    AssetPair(AssetAmount(60, 'BTC'), AssetAmount(30, 'MB'))
                }))

        self.assertEquals(TraderId(b'0'), data.trader_id)
        self.assertEquals(OrderId(TraderId(b'0'), OrderNumber(1)),
                          data.order_id)
        self.assertEquals(OrderId(TraderId(b'1'), OrderNumber(2)),
                          data.recipient_order_id)
        self.assertEquals(1234, data.proposal_id)
        self.assertEquals(
            AssetPair(AssetAmount(60, 'BTC'), AssetAmount(30, 'MB')),
            data.assets)
        self.assertEquals(Timestamp(1462224447.117), data.timestamp)
Beispiel #11
0
class OrderIDTestSuite(unittest.TestCase):
    """Order ID test cases."""
    def setUp(self):
        # Object creation
        self.order_id = OrderId(TraderId("0"), OrderNumber(1))
        self.order_id2 = OrderId(TraderId("0"), OrderNumber(1))
        self.order_id3 = OrderId(TraderId("0"), OrderNumber(2))

    def test_equality(self):
        # Test for equality
        self.assertEquals(self.order_id, self.order_id)
        self.assertEquals(self.order_id, self.order_id2)
        self.assertFalse(self.order_id == self.order_id3)
        self.assertEquals(NotImplemented, self.order_id.__eq__(""))

    def test_non_equality(self):
        # Test for non equality
        self.assertNotEquals(self.order_id, self.order_id3)

    def test_hashes(self):
        # Test for hashes
        self.assertEquals(self.order_id.__hash__(), self.order_id2.__hash__())
        self.assertNotEqual(self.order_id.__hash__(),
                            self.order_id3.__hash__())

    def test_str(self):
        # Test for string representation
        self.assertEquals('0.1', str(self.order_id))
Beispiel #12
0
    def setUp(self):
        yield super(TestDatabase, self).setUp()

        path = os.path.join(self.getStateDir(), 'sqlite')
        if not os.path.exists(path):
            os.makedirs(path)

        self.database = MarketDB(self.getStateDir(), 'market')

        self.order_id1 = OrderId(TraderId(b'3'), OrderNumber(4))
        self.order_id2 = OrderId(TraderId(b'4'), OrderNumber(5))
        self.order1 = Order(self.order_id1, AssetPair(AssetAmount(5, 'BTC'), AssetAmount(6, 'EUR')),
                            Timeout(3600), Timestamp.now(), True)
        self.order2 = Order(self.order_id2, AssetPair(AssetAmount(5, 'BTC'), AssetAmount(6, 'EUR')),
                            Timeout(3600), Timestamp.now(), False)
        self.order2.reserve_quantity_for_tick(OrderId(TraderId(b'3'), OrderNumber(4)), 3)

        self.transaction_id1 = TransactionId(TraderId(b"0"), TransactionNumber(4))
        self.transaction1 = Transaction(self.transaction_id1, AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MB')),
                                        OrderId(TraderId(b"0"), OrderNumber(1)),
                                        OrderId(TraderId(b"1"), OrderNumber(2)), Timestamp(20.0))

        self.payment1 = Payment(TraderId(b"0"), self.transaction_id1, AssetAmount(5, 'BTC'),
                                WalletAddress('abc'), WalletAddress('def'), PaymentId("abc"), Timestamp(20.0), False)

        self.transaction1.add_payment(self.payment1)
Beispiel #13
0
    def from_database(cls, data, payments):
        """
        Create a Transaction object based on information in the database.
        """
        trader_id, transaction_number, order_trader_id, order_number, partner_trader_id, partner_order_number, price,\
        price_type, transferred_price, quantity, quantity_type, transferred_quantity, transaction_timestamp,\
        sent_wallet_info, received_wallet_info, incoming_address, outgoing_address, partner_incoming_address,\
        partner_outgoing_address, match_id = data

        transaction_id = TransactionId(TraderId(str(trader_id)),
                                       TransactionNumber(transaction_number))
        transaction = cls(
            transaction_id, Price(price, str(price_type)),
            Quantity(quantity, str(quantity_type)),
            OrderId(TraderId(str(order_trader_id)), OrderNumber(order_number)),
            OrderId(TraderId(str(partner_trader_id)),
                    OrderNumber(partner_order_number)),
            Timestamp(float(transaction_timestamp)))

        transaction._transferred_price = Price(transferred_price,
                                               str(price_type))
        transaction._transferred_quantity = Quantity(transferred_quantity,
                                                     str(quantity_type))
        transaction.sent_wallet_info = sent_wallet_info
        transaction.received_wallet_info = received_wallet_info
        transaction.incoming_address = WalletAddress(str(incoming_address))
        transaction.outgoing_address = WalletAddress(str(outgoing_address))
        transaction.partner_incoming_address = WalletAddress(
            str(partner_incoming_address))
        transaction.partner_outgoing_address = WalletAddress(
            str(partner_outgoing_address))
        transaction.match_id = str(match_id)
        transaction._payments = payments

        return transaction
Beispiel #14
0
    def setUp(self, annotate=True):
        yield super(TestDatabase, self).setUp(annotate=annotate)

        path = os.path.join(self.getStateDir(), 'sqlite')
        if not os.path.exists(path):
            os.makedirs(path)

        self.database = MarketDB(self.getStateDir())

        self.order_id1 = OrderId(TraderId('3'), OrderNumber(4))
        self.order_id2 = OrderId(TraderId('4'), OrderNumber(5))
        self.order1 = Order(self.order_id1, Price(5,
                                                  'EUR'), Quantity(6, 'BTC'),
                            Timeout(3600), Timestamp.now(), True)
        self.order2 = Order(self.order_id2, Price(5,
                                                  'EUR'), Quantity(6, 'BTC'),
                            Timeout(3600), Timestamp.now(), False)

        self.transaction_id1 = TransactionId(TraderId("0"),
                                             TransactionNumber(4))
        self.transaction1 = Transaction(self.transaction_id1,
                                        Price(100, 'BTC'), Quantity(30, 'MC'),
                                        OrderId(TraderId("0"), OrderNumber(1)),
                                        OrderId(TraderId("1"), OrderNumber(2)),
                                        Timestamp(20.0))

        self.payment1 = Payment(MessageId(TraderId("0"), MessageNumber("4")),
                                self.transaction_id1, Quantity(5, 'MC'),
                                Price(6, 'BTC'), WalletAddress('abc'),
                                WalletAddress('def'), PaymentId("abc"),
                                Timestamp(20.0), False)

        self.transaction1.add_payment(self.payment1)
Beispiel #15
0
    def setUp(self, annotate=True):
        yield super(MatchingEngineTestSuite, self).setUp(annotate=annotate)
        # Object creation
        self.ask = Ask(
            OrderId(TraderId('2'), OrderNumber(1)),
            AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')),
            Timeout(30), Timestamp.now())
        self.bid = Bid(
            OrderId(TraderId('4'), OrderNumber(2)),
            AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')),
            Timeout(30), Timestamp.now())
        self.ask_order = Order(
            OrderId(TraderId('5'), OrderNumber(3)),
            AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')),
            Timeout(30), Timestamp.now(), True)
        self.bid_order = Order(
            OrderId(TraderId('6'), OrderNumber(4)),
            AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')),
            Timeout(30), Timestamp.now(), False)
        self.order_book = OrderBook()
        self.matching_engine = MatchingEngine(
            PriceTimeStrategy(self.order_book))

        self.ask_count = 2
        self.bid_count = 2
Beispiel #16
0
 def get_tx_done_block(ask_amount, bid_amount, traded_amount,
                       ask_total_traded, bid_total_traded):
     ask_pair = AssetPair(AssetAmount(ask_amount, 'BTC'),
                          AssetAmount(ask_amount, 'MB'))
     bid_pair = AssetPair(AssetAmount(bid_amount, 'BTC'),
                          AssetAmount(bid_amount, 'MB'))
     ask = Order(OrderId(TraderId('0' * 40), OrderNumber(1)), ask_pair,
                 Timeout(3600), Timestamp.now(), True)
     ask._traded_quantity = ask_total_traded
     bid = Order(OrderId(TraderId('1' * 40), OrderNumber(1)), bid_pair,
                 Timeout(3600), Timestamp.now(), False)
     bid._traded_quantity = bid_total_traded
     tx = Transaction(
         TransactionId(TraderId('0' * 40), TransactionNumber(1)),
         AssetPair(AssetAmount(traded_amount, 'BTC'),
                   AssetAmount(traded_amount, 'MB')),
         OrderId(TraderId('0' * 40), OrderNumber(1)),
         OrderId(TraderId('1' * 40), OrderNumber(1)), Timestamp(0.0))
     tx.transferred_assets.first += AssetAmount(traded_amount, 'BTC')
     tx.transferred_assets.second += AssetAmount(traded_amount, 'MB')
     tx_done_block = MarketBlock()
     tx_done_block.type = 'tx_done'
     tx_done_block.transaction = {
         'ask': ask.to_status_dictionary(),
         'bid': bid.to_status_dictionary(),
         'tx': tx.to_dictionary(),
         'version': MarketCommunity.PROTOCOL_VERSION
     }
     tx_done_block.transaction['ask']['address'], tx_done_block.transaction[
         'ask']['port'] = "1.1.1.1", 1234
     tx_done_block.transaction['bid']['address'], tx_done_block.transaction[
         'bid']['port'] = "1.1.1.1", 1234
     return tx_done_block
Beispiel #17
0
 def setUp(self):
     # Object creation
     self.proposed_trade = Trade.propose(
         TraderId(b'0'), OrderId(TraderId(b'0'), OrderNumber(1)),
         OrderId(TraderId(b'1'), OrderNumber(2)),
         AssetPair(AssetAmount(60, 'BTC'), AssetAmount(30, 'MB')),
         Timestamp(1462224447.117))
    def test_from_network(self):
        # Test for from network
        data = StartTransaction.from_network(
            type(
                'Data', (object, ), {
                    "trader_id": TraderId('0'),
                    "message_number": MessageNumber("1"),
                    "transaction_trader_id": TraderId('0'),
                    "transaction_number": TransactionNumber(1),
                    "order_trader_id": TraderId('0'),
                    "order_number": OrderNumber(1),
                    "recipient_trader_id": TraderId('1'),
                    "recipient_order_number": OrderNumber(2),
                    "proposal_id": 1235,
                    "price": Price(300, 'BTC'),
                    "quantity": Quantity(20, 'MC'),
                    "timestamp": Timestamp(0.0)
                }))

        self.assertEquals(MessageId(TraderId("0"), MessageNumber("1")),
                          data.message_id)
        self.assertEquals(TransactionId(TraderId("0"), TransactionNumber(1)),
                          data.transaction_id)
        self.assertEquals(OrderId(TraderId('0'), OrderNumber(1)),
                          data.order_id)
        self.assertEquals(OrderId(TraderId('1'), OrderNumber(2)),
                          data.recipient_order_id)
        self.assertEquals(1235, data.proposal_id)
        self.assertEquals(Timestamp(0.0), data.timestamp)
Beispiel #19
0
 def setUp(self):
     # Object creation
     self.start_transaction = StartTransaction(
         TraderId('0'), TransactionId(TraderId("0"), TransactionNumber(1)),
         OrderId(TraderId('0'), OrderNumber(1)),
         OrderId(TraderId('1'), OrderNumber(1)), 1234,
         AssetPair(AssetAmount(30, 'BTC'), AssetAmount(40, 'MC')),
         Timestamp(0.0))
 def setUp(self):
     # Object creation
     self.start_transaction = StartTransaction(
         MessageId(TraderId('0'), MessageNumber('1')),
         TransactionId(TraderId("0"), TransactionNumber(1)),
         OrderId(TraderId('0'), OrderNumber(1)),
         OrderId(TraderId('1'), OrderNumber(1)), 1234, Price(30, 'BTC'),
         Quantity(40, 'MC'), Timestamp(0.0))
Beispiel #21
0
 def from_unpack_list(cls, trader_id, message_number, timestamp, transaction_trader_id, transaction_number,
                      order_trader_id, order_number, recipient_trader_id, recipient_order_number, proposal_id,
                      price, price_type, quantity, quantity_type):
     return StartTransactionPayload(MessageId(TraderId(trader_id), MessageNumber(message_number)),
                                    Timestamp(timestamp), TransactionId(TraderId(transaction_trader_id),
                                                                        TransactionNumber(transaction_number)),
                                    OrderId(TraderId(order_trader_id), OrderNumber(order_number)),
                                    OrderId(TraderId(recipient_trader_id), OrderNumber(recipient_order_number)),
                                    proposal_id, Price(price, price_type), Quantity(quantity, quantity_type))
Beispiel #22
0
    def setUp(self, annotate=True):
        yield super(TestMarketBlock, self).setUp(annotate=annotate)

        self.ask = Ask(
            OrderId(TraderId('0' * 40), OrderNumber(1)),
            AssetPair(AssetAmount(30, 'BTC'), AssetAmount(30, 'MB')),
            Timeout(30), Timestamp(0.0), True)
        self.bid = Ask(
            OrderId(TraderId('1' * 40), OrderNumber(1)),
            AssetPair(AssetAmount(30, 'BTC'), AssetAmount(30, 'MB')),
            Timeout(30), Timestamp(0.0), False)
        self.transaction = Transaction(
            TransactionId(TraderId('0' * 40), TransactionNumber(1)),
            AssetPair(AssetAmount(30, 'BTC'), AssetAmount(30, 'MB')),
            OrderId(TraderId('0' * 40), OrderNumber(1)),
            OrderId(TraderId('1' * 40), OrderNumber(1)), Timestamp(0.0))

        ask_tx = self.ask.to_block_dict()
        ask_tx["address"], ask_tx["port"] = "127.0.0.1", 1337
        bid_tx = self.bid.to_block_dict()
        bid_tx["address"], bid_tx["port"] = "127.0.0.1", 1337

        self.tick_block = MarketBlock()
        self.tick_block.type = 'tick'
        self.tick_block.transaction = {'tick': ask_tx}

        self.cancel_block = MarketBlock()
        self.cancel_block.type = 'cancel_order'
        self.cancel_block.transaction = {
            'trader_id': 'a' * 40,
            'order_number': 1
        }

        self.tx_block = MarketBlock()
        self.tx_block.type = 'tx_init'
        self.tx_block.transaction = {
            'ask': ask_tx,
            'bid': bid_tx,
            'tx': self.transaction.to_dictionary()
        }

        payment = {
            'trader_id': 'a' * 40,
            'transaction_number': 3,
            'transferred': {
                'amount': 3,
                'type': 'BTC'
            },
            'payment_id': 'a',
            'address_from': 'a',
            'address_to': 'b',
            'timestamp': 1234.3,
            'success': True
        }
        self.payment_block = MarketBlock()
        self.payment_block.type = 'tx_payment'
        self.payment_block.transaction = {'payment': payment}
Beispiel #23
0
 def from_unpack_list(cls, trader_id, timestamp, tx_trader_id, transaction_number,
                      order_trader_id, order_number, recipient_trader_id, recipient_order_number, proposal_id,
                      asset1_amount, asset1_type, asset2_amount, asset2_type):
     return StartTransactionPayload(TraderId(trader_id), Timestamp(timestamp),
                                    TransactionId(TraderId(tx_trader_id), TransactionNumber(transaction_number)),
                                    OrderId(TraderId(order_trader_id), OrderNumber(order_number)),
                                    OrderId(TraderId(recipient_trader_id), OrderNumber(recipient_order_number)),
                                    proposal_id, AssetPair(AssetAmount(asset1_amount, asset1_type),
                                                           AssetAmount(asset2_amount, asset2_type)))
Beispiel #24
0
    def test_remove_tick(self):
        # Test remove tick
        self.side.insert_tick(self.tick)
        self.side.insert_tick(self.tick2)

        self.side.remove_tick(OrderId(TraderId('0'), OrderNumber(1)))
        self.assertEquals(1, len(self.side))
        self.side.remove_tick(OrderId(TraderId('1'), OrderNumber(2)))
        self.assertEquals(0, len(self.side))
Beispiel #25
0
 def setUp(self):
     # Object creation
     self.memory_transaction_repository = MemoryTransactionRepository("0")
     self.transaction_id = TransactionId(TraderId("0"),
                                         TransactionNumber(1))
     self.transaction = Transaction(self.transaction_id, Price(100, 'BTC'),
                                    Quantity(30, 'MC'),
                                    OrderId(TraderId("0"), OrderNumber(1)),
                                    OrderId(TraderId("2"), OrderNumber(2)),
                                    Timestamp(0.0))
Beispiel #26
0
    def test_insert_tick(self):
        # Test insert tick
        self.assertEquals(0, len(self.side))
        self.assertFalse(self.side.tick_exists(OrderId(TraderId('0'), OrderNumber(1))))

        self.side.insert_tick(self.tick)
        self.side.insert_tick(self.tick2)

        self.assertEquals(2, len(self.side))
        self.assertTrue(self.side.tick_exists(OrderId(TraderId('0'), OrderNumber(1))))
Beispiel #27
0
    def setUp(self):
        # Object creation

        self.tick = Tick(OrderId(TraderId('0'), OrderNumber(1)),
                         AssetPair(AssetAmount(60, 'BTC'), AssetAmount(30, 'MB')),
                         Timeout(100), Timestamp.now(), True)
        self.tick2 = Tick(OrderId(TraderId('1'), OrderNumber(2)),
                          AssetPair(AssetAmount(120, 'BTC'), AssetAmount(30, 'MB')),
                          Timeout(100), Timestamp.now(), True)
        self.side = Side()
Beispiel #28
0
 def setUp(self):
     # Object creation
     self.proposed_trade = Trade.propose(
         TraderId(b'0'), OrderId(TraderId(b'0'), OrderNumber(1)),
         OrderId(TraderId(b'1'), OrderNumber(2)),
         AssetPair(AssetAmount(60, 'BTC'), AssetAmount(30, 'MB')),
         Timestamp(1462224447.117))
     self.declined_trade = Trade.decline(
         TraderId(b'0'), Timestamp(1462224447.117), self.proposed_trade,
         DeclinedTradeReason.ORDER_COMPLETED)
Beispiel #29
0
    def setUp(self):
        # Object creation

        self.tick = Tick(OrderId(TraderId('0'), OrderNumber(1)),
                         Price(400, 'BTC'), Quantity(30, 'MC'),
                         Timeout(float("inf")), Timestamp(float("inf")), True)
        self.tick2 = Tick(OrderId(TraderId('1'), OrderNumber(2)),
                          Price(800, 'BTC'), Quantity(30, 'MC'),
                          Timeout(float("inf")), Timestamp(float("inf")), True)
        self.side = Side()
Beispiel #30
0
 def test_add_trade(self):
     """
     Test the add trade method of an order
     """
     self.order.reserve_quantity_for_tick(
         OrderId(TraderId('5'), OrderNumber(1)), Quantity(10, 'MC'))
     self.assertEquals(self.order.traded_quantity, Quantity(0, 'MC'))
     self.order.add_trade(OrderId(TraderId('5'), OrderNumber(1)),
                          Quantity(10, 'MC'))
     self.assertEquals(self.order.traded_quantity, Quantity(10, 'MC'))
Beispiel #31
0
 def setUp(self):
     # Object creation
     self.memory_transaction_repository = MemoryTransactionRepository("0")
     self.transaction_id = TransactionId(TraderId(b"0"),
                                         TransactionNumber(1))
     self.transaction = Transaction(
         self.transaction_id,
         AssetPair(AssetAmount(10, 'BTC'), AssetAmount(10, 'MB')),
         OrderId(TraderId(b"0"), OrderNumber(1)),
         OrderId(TraderId(b"2"), OrderNumber(2)), Timestamp(0.0))
Beispiel #32
0
 def setUp(self):
     # Object creation
     self.order_id = OrderId(TraderId("0"), OrderNumber(1))
     self.order_id2 = OrderId(TraderId("0"), OrderNumber(1))
     self.order_id3 = OrderId(TraderId("0"), OrderNumber(2))