def test_build_when_no_updates_raises_exception(self):
        # Arrange
        bar_type = TestStubs.bartype_audusd_1min_bid()
        builder = BarBuilder(AUDUSD_SIM, bar_type)

        # Act, Assert
        with pytest.raises(TypeError):
            builder.build()
    def test_build_with_previous_close(self):
        # Arrange
        bar_spec = TestStubs.bar_spec_1min_mid()
        builder = BarBuilder(bar_spec, use_previous_close=True)

        tick1 = QuoteTick(symbol=AUDUSD_FXCM,
                          bid=Price("1.00001"),
                          ask=Price("1.00004"),
                          bid_size=Quantity(1),
                          ask_size=Quantity(1),
                          timestamp=UNIX_EPOCH)

        tick2 = QuoteTick(symbol=AUDUSD_FXCM,
                          bid=Price("1.00002"),
                          ask=Price("1.00005"),
                          bid_size=Quantity(1),
                          ask_size=Quantity(1),
                          timestamp=UNIX_EPOCH)

        tick3 = QuoteTick(symbol=AUDUSD_FXCM,
                          bid=Price("1.00000"),
                          ask=Price("1.00003"),
                          bid_size=Quantity(1),
                          ask_size=Quantity(1),
                          timestamp=UNIX_EPOCH)

        builder.handle_quote_tick(tick1)
        builder.handle_quote_tick(tick2)
        builder.handle_quote_tick(tick3)
        builder.build()

        # Act
        bar = builder.build()  # Also resets builder

        # Assert
        self.assertEqual(Price("1.000015"), bar.open)
        self.assertEqual(Price("1.000015"), bar.high)
        self.assertEqual(Price("1.000015"), bar.low)
        self.assertEqual(Price("1.000015"), bar.close)
        self.assertEqual(Quantity(), bar.volume)
        self.assertEqual(UNIX_EPOCH, bar.timestamp)
        self.assertEqual(UNIX_EPOCH, builder.last_update)
        self.assertEqual(0, builder.count)
Exemple #3
0
    def test_build_with_previous_close(self):
        # Arrange
        bar_spec = TestStubs.bar_spec_1min_mid()
        builder = BarBuilder(bar_spec, use_previous_close=True)

        builder.update(Price("1.00001"), Quantity("1.0"), UNIX_EPOCH)
        builder.build()  # This close should become the next open

        builder.update(Price("1.00000"), Quantity("1.0"), UNIX_EPOCH)
        builder.update(Price("1.00003"), Quantity("1.0"), UNIX_EPOCH)
        builder.update(Price("1.00002"), Quantity("1.0"), UNIX_EPOCH)

        bar2 = builder.build()

        # Assert
        self.assertEqual(Price("1.00001"), bar2.open)
        self.assertEqual(Price("1.00003"), bar2.high)
        self.assertEqual(Price("1.00000"), bar2.low)
        self.assertEqual(Price("1.00002"), bar2.close)
        self.assertEqual(Quantity("3.0"), bar2.volume)
Exemple #4
0
    def test_build_when_received_updates_returns_expected_bar(self):
        # Arrange
        bar_spec = TestStubs.bar_spec_1min_bid()
        builder = BarBuilder(bar_spec, use_previous_close=True)

        builder.update(Price("1.00001"), Quantity("1.0"), UNIX_EPOCH)
        builder.update(Price("1.00002"), Quantity("1.5"), UNIX_EPOCH)
        builder.update(Price("1.00000"), Quantity("1.5"), UNIX_EPOCH + timedelta(seconds=1))

        # Act
        bar = builder.build()  # Also resets builder

        # Assert
        self.assertEqual(Price("1.00001"), bar.open)
        self.assertEqual(Price("1.00002"), bar.high)
        self.assertEqual(Price("1.00000"), bar.low)
        self.assertEqual(Price("1.00000"), bar.close)
        self.assertEqual(Quantity("4.0"), bar.volume)
        self.assertEqual(UNIX_EPOCH + timedelta(seconds=1), bar.timestamp)
        self.assertEqual(UNIX_EPOCH + timedelta(seconds=1), builder.last_timestamp)
        self.assertEqual(0, builder.count)