Ejemplo n.º 1
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))
Ejemplo n.º 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))
     self.declined_trade = Trade.decline(MessageId(TraderId('0'), MessageNumber('message_number')),
                                         Timestamp(1462224447.117), self.proposed_trade)
Ejemplo n.º 3
0
 def setUp(self):
     # Object creation
     self.proposed_trade = Trade.propose(TraderId('0'),
                                         OrderId(TraderId('0'), OrderNumber(1)),
                                         OrderId(TraderId('1'), OrderNumber(2)),
                                         AssetPair(AssetAmount(60, 'BTC'), AssetAmount(30, 'MB')),
                                         Timestamp(1462224447.117))
     self.counter_trade = Trade.counter(TraderId('0'), AssetPair(AssetAmount(60, 'BTC'), AssetAmount(30, 'MB')),
                                        Timestamp(1462224447.117), self.proposed_trade)
Ejemplo n.º 4
0
 def setUp(self):
     # Object creation
     self.proposed_trade = Trade.propose(TraderId('0'),
                                         OrderId(TraderId('0'), OrderNumber(1)),
                                         OrderId(TraderId('1'), OrderNumber(2)),
                                         AssetPair(AssetAmount(60, 'BTC'), AssetAmount(30, 'MB')),
                                         Timestamp(1462224447.117))
     self.declined_trade = Trade.decline(TraderId('0'),
                                         Timestamp(1462224447.117), self.proposed_trade,
                                         DeclinedTradeReason.ORDER_COMPLETED)
Ejemplo n.º 5
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)
Ejemplo n.º 6
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.counter_trade = Trade.counter(
         TraderId(b'0'),
         AssetPair(AssetAmount(60, 'BTC'), AssetAmount(30, 'MB')),
         Timestamp(1462224447.117), self.proposed_trade)
Ejemplo n.º 7
0
 def setUp(self, annotate=True):
     yield super(AbstractTestOrderBook, self).setUp(annotate=annotate)
     # Object creation
     self.ask = Ask(
         OrderId(TraderId('0'), OrderNumber(1)),
         AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MB')),
         Timeout(100), Timestamp.now())
     self.invalid_ask = Ask(
         OrderId(TraderId('0'), OrderNumber(1)),
         AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MB')),
         Timeout(0), Timestamp(0.0))
     self.ask2 = Ask(
         OrderId(TraderId('1'), OrderNumber(1)),
         AssetPair(AssetAmount(400, 'BTC'), AssetAmount(30, 'MB')),
         Timeout(100), Timestamp.now())
     self.bid = Bid(
         OrderId(TraderId('2'), OrderNumber(1)),
         AssetPair(AssetAmount(200, 'BTC'), AssetAmount(30, 'MB')),
         Timeout(100), Timestamp.now())
     self.invalid_bid = Bid(
         OrderId(TraderId('0'), OrderNumber(1)),
         AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MB')),
         Timeout(0), Timestamp(0.0))
     self.bid2 = Bid(
         OrderId(TraderId('3'), OrderNumber(1)),
         AssetPair(AssetAmount(300, 'BTC'), AssetAmount(30, 'MB')),
         Timeout(100), Timestamp.now())
     self.trade = Trade.propose(
         TraderId('0'), OrderId(TraderId('0'), OrderNumber(1)),
         OrderId(TraderId('0'), OrderNumber(1)),
         AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MB')),
         Timestamp(1462224447.117))
     self.order_book = OrderBook()
Ejemplo n.º 8
0
    def setUp(self):
        # Object creation
        self.transaction_id = TransactionId(TraderId("0"),
                                            TransactionNumber(1))
        self.transaction = Transaction(self.transaction_id, Price(100, 'BTC'),
                                       Quantity(30, 'MC'),
                                       OrderId(TraderId('0'), OrderNumber(2)),
                                       OrderId(TraderId('1'), OrderNumber(1)),
                                       Timestamp(0.0))
        self.proposed_trade = Trade.propose(
            MessageId(TraderId('0'), MessageNumber('1')),
            OrderId(TraderId('0'), OrderNumber(2)),
            OrderId(TraderId('1'), OrderNumber(3)), Price(100, 'BTC'),
            Quantity(30, 'MC'), Timestamp(0.0))

        self.tick = Tick(
            MessageId(TraderId('0'), MessageNumber('message_number')),
            OrderId(TraderId('0'), OrderNumber(1)), Price(100, 'BTC'),
            Quantity(5, 'MC'), Timeout(0.0), Timestamp(float("inf")), True)
        self.tick2 = Tick(
            MessageId(TraderId('0'), MessageNumber('message_number')),
            OrderId(TraderId('0'), OrderNumber(2)), Price(100, 'BTC'),
            Quantity(100, 'MC'), Timeout(0.0), Timestamp(float("inf")), True)
        self.order = Order(OrderId(TraderId("0"), OrderNumber(3)),
                           Price(100, 'BTC'), Quantity(30, 'MC'),
                           Timeout(5000), Timestamp(time.time()), False)
        self.order2 = Order(OrderId(TraderId("0"), OrderNumber(4)),
                            Price(100, 'BTC'), Quantity(30, 'MC'), Timeout(5),
                            Timestamp(time.time() - 1000), True)
Ejemplo n.º 9
0
    def test_decline_trade(self):
        """
        Test whether a decline trade is sent between nodes if the price of a proposed trade is not right
        """
        yield self.introduce_nodes(self.node_a, self.node_b)
        yield self.create_send_ask(self.node_a, self.node_b)

        self.node_b.community.create_bid(9, 'DUM1', 10, 'DUM2', 3600)
        yield self.parse_assert_packets(self.node_a)  # Parse the bid message

        order_a = self.node_a.community.order_manager.order_repository.find_all(
        )[0]
        order_b = self.node_b.community.order_manager.order_repository.find_all(
        )[0]
        order_b.reserve_quantity_for_tick(order_a.order_id,
                                          order_b.total_quantity)
        self.node_b.community.order_manager.order_repository.update(order_b)
        proposed_trade = Trade.propose(
            self.node_b.community.order_book.message_repository.next_identity(
            ), order_b.order_id, order_a.order_id, Price(9, 'DUM1'),
            order_b.total_quantity, Timestamp.now())
        self.node_b.community.send_proposed_trade(proposed_trade)
        deferred = Deferred()

        def mocked_remove(_):
            deferred.callback(None)

        self.node_b.community.order_book.remove_tick = mocked_remove

        yield self.parse_assert_packets(self.node_a)
        yield self.parse_assert_packets(self.node_b)
        yield deferred
Ejemplo n.º 10
0
 def setUp(self, annotate=True):
     yield super(AbstractTestOrderBook, self).setUp(annotate=annotate)
     # Object creation
     self.ask = Ask(OrderId(TraderId('0'), OrderNumber(1)),
                    Price(100, 'BTC'), Quantity(30, 'MC'),
                    Timeout(1462224447.117), Timestamp(1462224447.117))
     self.invalid_ask = Ask(OrderId(TraderId('0'), OrderNumber(1)),
                            Price(100, 'BTC'), Quantity(30, 'MC'),
                            Timeout(0), Timestamp(0.0))
     self.ask2 = Ask(OrderId(TraderId('1'), OrderNumber(1)),
                     Price(400, 'BTC'), Quantity(30, 'MC'),
                     Timeout(1462224447.117), Timestamp(1462224447.117))
     self.bid = Bid(OrderId(TraderId('2'), OrderNumber(1)),
                    Price(200, 'BTC'), Quantity(30, 'MC'),
                    Timeout(1462224447.117), Timestamp(1462224447.117))
     self.invalid_bid = Bid(OrderId(TraderId('0'), OrderNumber(1)),
                            Price(100, 'BTC'), Quantity(30, 'MC'),
                            Timeout(0), Timestamp(0.0))
     self.bid2 = Bid(OrderId(TraderId('3'), OrderNumber(1)),
                     Price(300, 'BTC'), Quantity(30, 'MC'),
                     Timeout(1462224447.117), Timestamp(1462224447.117))
     self.trade = Trade.propose(MessageId(TraderId('0'), MessageNumber(1)),
                                OrderId(TraderId('0'), OrderNumber(1)),
                                OrderId(TraderId('0'), OrderNumber(1)),
                                Price(100, 'BTC'), Quantity(30, 'MC'),
                                Timestamp(1462224447.117))
     self.order_book = OrderBook()
Ejemplo n.º 11
0
    def setUp(self):
        # Object creation
        self.transaction_id = TransactionId(TraderId("0"),
                                            TransactionNumber(1))
        self.transaction = Transaction(
            self.transaction_id,
            AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MC')),
            OrderId(TraderId('0'), OrderNumber(2)),
            OrderId(TraderId('1'), OrderNumber(1)), Timestamp(0.0))
        self.proposed_trade = Trade.propose(
            TraderId('0'), OrderId(TraderId('0'), OrderNumber(2)),
            OrderId(TraderId('1'), OrderNumber(3)),
            AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MC')),
            Timestamp(0.0))

        self.tick = Tick(
            OrderId(TraderId('0'), OrderNumber(1)),
            AssetPair(AssetAmount(5, 'BTC'), AssetAmount(5, 'MC')), Timeout(0),
            Timestamp(float("inf")), True)
        self.tick2 = Tick(
            OrderId(TraderId('0'), OrderNumber(2)),
            AssetPair(AssetAmount(500, 'BTC'), AssetAmount(5, 'MC')),
            Timeout(0), Timestamp(float("inf")), True)

        self.order_timestamp = Timestamp.now()
        self.order = Order(
            OrderId(TraderId("0"), OrderNumber(3)),
            AssetPair(AssetAmount(50, 'BTC'), AssetAmount(5, 'MC')),
            Timeout(5000), self.order_timestamp, False)
        self.order.set_verified()
        self.order2 = Order(
            OrderId(TraderId("0"), OrderNumber(4)),
            AssetPair(AssetAmount(50, 'BTC'), AssetAmount(5, 'MC')),
            Timeout(5), Timestamp(time.time() - 1000), True)
        self.order2.set_verified()
Ejemplo n.º 12
0
    def setUp(self):
        # Object creation
        self.transaction_id = TransactionId(TraderId("0"), TransactionNumber(1))
        self.transaction = Transaction(self.transaction_id, AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MC')),
                                       OrderId(TraderId('0'), OrderNumber(2)),
                                       OrderId(TraderId('1'), OrderNumber(1)), Timestamp(0.0))
        self.proposed_trade = Trade.propose(TraderId('0'),
                                            OrderId(TraderId('0'), OrderNumber(2)),
                                            OrderId(TraderId('1'), OrderNumber(3)),
                                            AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MC')), Timestamp(0.0))

        self.tick = Tick(OrderId(TraderId('0'), OrderNumber(1)),
                         AssetPair(AssetAmount(5, 'BTC'), AssetAmount(5, 'MC')),
                         Timeout(0), Timestamp(float("inf")), True)
        self.tick2 = Tick(OrderId(TraderId('0'), OrderNumber(2)),
                          AssetPair(AssetAmount(500, 'BTC'), AssetAmount(5, 'MC')),
                          Timeout(0), Timestamp(float("inf")), True)

        self.order_timestamp = Timestamp.now()
        self.order = Order(OrderId(TraderId("0"), OrderNumber(3)),
                           AssetPair(AssetAmount(50, 'BTC'), AssetAmount(5, 'MC')),
                           Timeout(5000), self.order_timestamp, False)
        self.order.set_verified()
        self.order2 = Order(OrderId(TraderId("0"), OrderNumber(4)),
                            AssetPair(AssetAmount(50, 'BTC'), AssetAmount(5, 'MC')),
                            Timeout(5), Timestamp(time.time() - 1000), True)
        self.order2.set_verified()
Ejemplo n.º 13
0
class TradeTestSuite(unittest.TestCase):
    """Trade test cases."""

    def setUp(self):
        # Object creation
        self.trade = Trade(TraderId('0'),
                           OrderId(TraderId('0'), OrderNumber(3)),
                           OrderId(TraderId('0'), OrderNumber(4)), 1234, Timestamp(1462224447.117))

    def test_to_network(self):
        # Test for to network
        self.assertEquals(NotImplemented, self.trade.to_network())
Ejemplo n.º 14
0
class TradeTestSuite(unittest.TestCase):
    """Trade test cases."""

    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))

    def test_to_network(self):
        # Test for to network
        self.assertEquals(NotImplemented, self.trade.to_network())
Ejemplo n.º 15
0
 def setUp(self):
     # Object creation
     self.transaction_id = TransactionId(TraderId("0"), TransactionNumber(1))
     self.transaction = Transaction(self.transaction_id, AssetPair(AssetAmount(100, 'BTC'), AssetAmount(100, 'MB')),
                                    OrderId(TraderId('3'), OrderNumber(2)),
                                    OrderId(TraderId('2'), OrderNumber(1)), Timestamp(0.0))
     self.proposed_trade = Trade.propose(TraderId('0'),
                                         OrderId(TraderId('0'), OrderNumber(2)),
                                         OrderId(TraderId('1'), OrderNumber(3)),
                                         AssetPair(AssetAmount(100, 'BTC'), AssetAmount(100, 'MB')), Timestamp(0.0))
     self.payment = Payment(TraderId("0"), TransactionId(TraderId('2'), TransactionNumber(2)),
                            AssetAmount(3, 'MB'), WalletAddress('a'), WalletAddress('b'),
                            PaymentId('aaa'), Timestamp(4.0), True)
Ejemplo n.º 16
0
    def setUp(self, annotate=True):
        yield super(CommunityTestSuite, self).setUp(annotate=annotate)

        dummy1_wallet = DummyWallet1()
        dummy2_wallet = DummyWallet2()

        self.market_community = MarketCommunity(self.dispersy,
                                                self.master_member,
                                                self.member)
        self.market_community.initialize(wallets={
            dummy1_wallet.get_identifier():
            dummy1_wallet,
            dummy2_wallet.get_identifier():
            dummy2_wallet
        },
                                         use_database=False)
        self.market_community.use_local_address = True
        self.dispersy._lan_address = ("127.0.0.1", 1234)
        self.dispersy._endpoint.open(self.dispersy)

        self.dispersy.attach_community(self.market_community)

        eccrypto = ECCrypto()
        ec = eccrypto.generate_key(u"curve25519")
        member = Member(self.dispersy, ec, 1)

        trader_id = hashlib.sha1(member.public_key).digest().encode('hex')
        self.ask = Ask(
            MessageId(TraderId('0'), MessageNumber('message_number')),
            OrderId(TraderId(trader_id), OrderNumber(1234)),
            Price(63400, 'DUM1'), Quantity(30, 'DUM2'), Timeout(3600),
            Timestamp.now())
        self.ask.sign(member)

        self.bid = Bid(
            MessageId(TraderId('1'), MessageNumber('message_number')),
            OrderId(TraderId(trader_id), OrderNumber(1235)),
            Price(343, 'DUM1'), Quantity(22, 'DUM2'), Timeout(3600),
            Timestamp.now())
        self.bid.sign(member)
        self.order = Order(
            OrderId(TraderId(self.market_community.mid), OrderNumber(24)),
            Price(20, 'DUM1'), Quantity(30, 'DUM2'), Timeout(3600.0),
            Timestamp.now(), False)
        self.proposed_trade = Trade.propose(
            MessageId(TraderId('0'), MessageNumber('message_number')),
            OrderId(TraderId('0'), OrderNumber(23)),
            OrderId(TraderId(self.market_community.mid), OrderNumber(24)),
            Price(20, 'DUM1'), Quantity(30, 'DUM2'), Timestamp.now())
Ejemplo n.º 17
0
    def add_transaction_and_payment(self):
        """
        Add a transaction and a payment to the market
        """
        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))
        transaction = self.session.lm.market_community.transaction_manager.create_from_proposed_trade(proposed_trade)

        payment = Payment(MessageId(TraderId("0"), MessageNumber("1")), transaction.transaction_id,
                          Quantity(0, 'MC'), Price(20, 'BTC'), WalletAddress('a'), WalletAddress('b'),
                          PaymentId('aaa'), Timestamp(4.0), True)
        transaction.add_payment(payment)
        self.session.lm.market_community.transaction_manager.transaction_repository.update(transaction)

        return transaction
Ejemplo n.º 18
0
 def setUp(self):
     # Object creation
     self.transaction_id = TransactionId(TraderId("0"),
                                         TransactionNumber(1))
     self.transaction = Transaction(
         self.transaction_id,
         AssetPair(AssetAmount(100, 'BTC'), AssetAmount(100, 'MB')),
         OrderId(TraderId('3'), OrderNumber(2)),
         OrderId(TraderId('2'), OrderNumber(1)), Timestamp(0.0))
     self.proposed_trade = Trade.propose(
         TraderId('0'), OrderId(TraderId('0'), OrderNumber(2)),
         OrderId(TraderId('1'), OrderNumber(3)),
         AssetPair(AssetAmount(100, 'BTC'), AssetAmount(100, 'MB')),
         Timestamp(0.0))
     self.payment = Payment(
         TraderId("0"), TransactionId(TraderId('2'), TransactionNumber(2)),
         AssetAmount(3, 'MB'), WalletAddress('a'), WalletAddress('b'),
         PaymentId('aaa'), Timestamp(4.0), True)
Ejemplo n.º 19
0
    def add_transaction_and_payment(self):
        """
        Add a transaction and a payment to the market
        """
        proposed_trade = Trade.propose(TraderId('0'),
                                       OrderId(TraderId('0'), OrderNumber(1)),
                                       OrderId(TraderId('1'), OrderNumber(2)),
                                       AssetPair(AssetAmount(30, 'BTC'), AssetAmount(60, 'MB')),
                                       Timestamp(1462224447.117))
        transaction = self.session.lm.market_community.transaction_manager.create_from_proposed_trade(
            proposed_trade, 'abcd')

        payment = Payment(TraderId("0"), transaction.transaction_id,
                          AssetAmount(20, 'BTC'), WalletAddress('a'), WalletAddress('b'),
                          PaymentId('aaa'), Timestamp(4.0), True)
        transaction.add_payment(payment)
        self.session.lm.market_community.transaction_manager.transaction_repository.update(transaction)

        return transaction
Ejemplo n.º 20
0
    def _search_for_quantity_in_price_level_total(self, tick_entry,
                                                  quantity_to_trade, order):
        trading_quantity = quantity_to_trade
        quantity_to_trade = Quantity(0, quantity_to_trade.wallet_id)

        self._logger.debug(
            "Match with the id (%s) was found for order (%s). Price: %i, Quantity: %i)",
            str(tick_entry.order_id), str(order.order_id),
            float(tick_entry.price), int(trading_quantity))
        order.reserve_quantity_for_tick(tick_entry.tick.order_id,
                                        trading_quantity)

        proposed_trades = [
            Trade.propose(self.order_book.message_repository.next_identity(),
                          order.order_id, tick_entry.order_id,
                          tick_entry.price, trading_quantity, Timestamp.now())
        ]

        return quantity_to_trade, proposed_trades
Ejemplo n.º 21
0
 def setUp(self):
     # Object creation
     self.transaction_id = TransactionId(TraderId("0"),
                                         TransactionNumber(1))
     self.transaction = Transaction(self.transaction_id, Price(100, 'BTC'),
                                    Quantity(30, 'MC'),
                                    OrderId(TraderId('3'), OrderNumber(2)),
                                    OrderId(TraderId('2'), OrderNumber(1)),
                                    Timestamp(0.0))
     self.proposed_trade = Trade.propose(
         MessageId(TraderId('0'), MessageNumber('1')),
         OrderId(TraderId('0'), OrderNumber(2)),
         OrderId(TraderId('1'), OrderNumber(3)), Price(100, 'BTC'),
         Quantity(30, 'MC'), Timestamp(0.0))
     self.payment = Payment(
         MessageId(TraderId("0"), MessageNumber("1")),
         TransactionId(TraderId('2'), TransactionNumber(2)),
         Quantity(3, 'MC'), Price(2, 'BTC'), WalletAddress('a'),
         WalletAddress('b'), PaymentId('aaa'), Timestamp(4.0), True)
Ejemplo n.º 22
0
    def setUp(self):
        # Object creation
        self.memory_transaction_repository = MemoryTransactionRepository("0")
        self.transaction_manager = TransactionManager(self.memory_transaction_repository)

        self.transaction_id = TransactionId(TraderId(b"0"), TransactionNumber(1))
        self.transaction = Transaction(self.transaction_id, AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MB')),
                                       OrderId(TraderId(b'3'), OrderNumber(2)),
                                       OrderId(TraderId(b'2'), OrderNumber(1)), Timestamp(0.0))
        self.proposed_trade = Trade.propose(TraderId(b'0'),
                                            OrderId(TraderId(b'0'), OrderNumber(1)),
                                            OrderId(TraderId(b'1'), OrderNumber(2)),
                                            AssetPair(AssetAmount(30, 'BTC'), AssetAmount(30, 'MB')),
                                            Timestamp(1462224447.117))
        self.start_transaction = StartTransaction(TraderId(b'0'),
                                                  TransactionId(TraderId(b"0"), TransactionNumber(1)),
                                                  OrderId(TraderId(b'0'), OrderNumber(1)),
                                                  OrderId(TraderId(b'1'), OrderNumber(2)), 1235,
                                                  AssetPair(AssetAmount(20, 'BTC'), AssetAmount(20, 'MB')),
                                                  Timestamp(0.0))
Ejemplo n.º 23
0
 def setUp(self):
     yield super(AbstractTestOrderBook, self).setUp()
     # Object creation
     self.ask = Ask(OrderId(TraderId('0'), OrderNumber(1)),
                    AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now())
     self.invalid_ask = Ask(OrderId(TraderId('0'), OrderNumber(1)),
                            AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MB')), Timeout(0), Timestamp(0.0))
     self.ask2 = Ask(OrderId(TraderId('1'), OrderNumber(1)),
                     AssetPair(AssetAmount(400, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now())
     self.bid = Bid(OrderId(TraderId('2'), OrderNumber(1)),
                    AssetPair(AssetAmount(200, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now())
     self.invalid_bid = Bid(OrderId(TraderId('0'), OrderNumber(1)),
                            AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MB')), Timeout(0), Timestamp(0.0))
     self.bid2 = Bid(OrderId(TraderId('3'), OrderNumber(1)),
                     AssetPair(AssetAmount(300, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now())
     self.trade = Trade.propose(TraderId('0'),
                                OrderId(TraderId('0'), OrderNumber(1)),
                                OrderId(TraderId('0'), OrderNumber(1)),
                                AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MB')),
                                Timestamp(1462224447.117))
     self.order_book = OrderBook()
Ejemplo n.º 24
0
    def add_transaction_and_payment(self):
        """
        Add a transaction and a payment to the market
        """
        proposed_trade = Trade.propose(
            TraderId('0'), OrderId(TraderId('0'), OrderNumber(1)),
            OrderId(TraderId('1'), OrderNumber(2)),
            AssetPair(AssetAmount(30, 'BTC'), AssetAmount(60, 'MB')),
            Timestamp(1462224447.117))
        transaction = self.session.lm.market_community.transaction_manager.create_from_proposed_trade(
            proposed_trade, 'abcd')

        payment = Payment(TraderId("0"), transaction.transaction_id,
                          AssetAmount(20, 'BTC'), WalletAddress('a'),
                          WalletAddress('b'), PaymentId('aaa'), Timestamp(4.0),
                          True)
        transaction.add_payment(payment)
        self.session.lm.market_community.transaction_manager.transaction_repository.update(
            transaction)

        return transaction
Ejemplo n.º 25
0
    def test_counter_trade(self):
        """
        Test whether a counter trade is made between two nodes
        """
        deferred = Deferred()

        def mocked_start_transaction(*_):
            deferred.callback(None)

        self.node_a.community.matching_enabled = False
        self.node_b.community.matching_enabled = False

        self.node_a.community.start_transaction = mocked_start_transaction
        yield self.introduce_nodes(self.node_a, self.node_b)
        yield self.create_send_ask(self.node_a, self.node_b)

        # Send a proposed trade message
        self.node_b.community.create_bid(10, 'DUM1', 10, 'DUM2', 3600)
        yield self.parse_assert_packets(self.node_a)  # Parse the bid message
        yield self.parse_assert_packets(self.node_b)

        order_a = self.node_a.community.order_manager.order_repository.find_all(
        )[0]
        order_b = self.node_b.community.order_manager.order_repository.find_all(
        )[0]
        order_b._traded_quantity = Quantity(5, 'DUM2')
        self.node_b.community.order_manager.order_repository.update(order_b)
        order_a.reserve_quantity_for_tick(order_b.order_id,
                                          order_a.total_quantity)
        self.node_a.community.order_manager.order_repository.update(order_a)
        proposed_trade = Trade.propose(
            self.node_b.community.order_book.message_repository.next_identity(
            ), order_a.order_id, order_b.order_id, Price(10, 'DUM1'),
            order_a.total_quantity, Timestamp.now())
        self.node_a.community.send_proposed_trade(proposed_trade)

        yield self.parse_assert_packets(self.node_b)
        yield self.parse_assert_packets(self.node_a)

        yield deferred
Ejemplo n.º 26
0
    def _search_for_quantity_in_price_level_partial(self, tick_entry,
                                                    quantity_to_trade, order):
        quantity_to_trade -= tick_entry.quantity

        self._logger.debug("Match with the id (%s) was found for order (%s) ",
                           str(tick_entry.order_id), str(order.order_id))
        order.reserve_quantity_for_tick(tick_entry.tick.order_id,
                                        tick_entry.quantity)

        proposed_trades = [
            Trade.propose(self.order_book.message_repository.next_identity(),
                          order.order_id, tick_entry.order_id,
                          tick_entry.price, tick_entry.quantity,
                          Timestamp.now())
        ]

        # Search the next tick
        quantity_to_trade, trades = self._search_for_quantity_in_price_level(
            tick_entry.next_tick, quantity_to_trade, order)

        proposed_trades = proposed_trades + trades
        return quantity_to_trade, proposed_trades
Ejemplo n.º 27
0
    def setUp(self):
        # Object creation
        self.memory_transaction_repository = MemoryTransactionRepository("0")
        self.transaction_manager = TransactionManager(
            self.memory_transaction_repository)

        self.transaction_id = TransactionId(TraderId("0"),
                                            TransactionNumber(1))
        self.transaction = Transaction(self.transaction_id, Price(100, 'BTC'),
                                       Quantity(30, 'MC'),
                                       OrderId(TraderId('3'), OrderNumber(2)),
                                       OrderId(TraderId('2'), OrderNumber(1)),
                                       Timestamp(0.0))
        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))
        self.start_transaction = StartTransaction(
            MessageId(TraderId('0'), MessageNumber('1')),
            TransactionId(TraderId("0"), TransactionNumber(1)),
            OrderId(TraderId('0'), OrderNumber(1)),
            OrderId(TraderId('1'), OrderNumber(2)), 1235, Price(3600, 'BTC'),
            Quantity(20, 'MC'), Timestamp(0.0))
Ejemplo n.º 28
0
 def setUp(self):
     # Object creation
     self.trade = Trade(TraderId('0'),
                        OrderId(TraderId('0'), OrderNumber(3)),
                        OrderId(TraderId('0'), OrderNumber(4)), 1234, Timestamp(1462224447.117))
Ejemplo n.º 29
0
 def setUp(self):
     # Object creation
     self.trade = Trade(TraderId(b'0'),
                        OrderId(TraderId(b'0'), OrderNumber(3)),
                        OrderId(TraderId(b'0'), OrderNumber(4)), 1234,
                        Timestamp(1462224447.117))