Ejemplo n.º 1
0
        public void AggregatesNewQuoteBarProperly()
        {
            //Arrange
            QuoteBar quoteBar           = null;
            var      quoteBarAggregator = new QuoteBarAggregator(4);

            quoteBarAggregator.DataAggregated += (sender, args) =>
            {
                quoteBar = args;
            };

            //Act
            var time         = DateTime.Today;
            var tickersymbol = TickerSymbol.NIL("TST");
            var bar1         = new QuoteBar
            {
                Occured     = time,
                Ticker      = tickersymbol,
                Bid         = new BarImpl(1, 2, 0.75m, 1.25m),
                LastBidSize = 3,
                Ask         = null,
                LastAskSize = 0
            };

            quoteBarAggregator.Feed(bar1);
            quoteBar.Should().BeNull();

            var bar2 = new QuoteBar
            {
                Occured     = time,
                Ticker      = tickersymbol,
                Bid         = new BarImpl(1.1m, 2.2m, 0.9m, 2.1m),
                LastBidSize = 3,
                Ask         = new BarImpl(2.2m, 4.4m, 3.3m, 3.3m),
                LastAskSize = 0
            };

            quoteBarAggregator.Feed(bar2);
            quoteBar.Should().BeNull();

            var bar3 = new QuoteBar
            {
                Occured     = time,
                Ticker      = tickersymbol,
                Bid         = new BarImpl(1, 2, 0.5m, 1.75m),
                LastBidSize = 3,
                Ask         = null,
                LastAskSize = 0
            };

            quoteBarAggregator.Feed(bar3);
            quoteBar.Should().BeNull();

            var bar4 = new QuoteBar
            {
                Occured     = time,
                Ticker      = tickersymbol,
                Bid         = null,
                LastBidSize = 0,
                Ask         = new BarImpl(1, 7, 0.5m, 4.4m),
                LastAskSize = 4,
            };

            //Assert
            quoteBarAggregator.Feed(bar4);
            quoteBar.Should().NotBeNull();
            bar1.Ticker.Should().Be(quoteBar.Ticker);
            bar1.Bid.Open.Should().Be(quoteBar.Bid.Open);
            bar2.Ask.Open.Should().Be(quoteBar.Ask.Open);
            bar2.Bid.High.Should().Be(quoteBar.Bid.High);
            bar4.Ask.High.Should().Be(quoteBar.Ask.High);
            bar3.Bid.Low.Should().Be(quoteBar.Bid.Low);
            bar4.Ask.Low.Should().Be(quoteBar.Ask.Low);
            bar3.Bid.Close.Should().Be(quoteBar.Bid.Close);
            bar4.Ask.Close.Should().Be(quoteBar.Ask.Close);
            bar3.LastBidSize.Should().Be(quoteBar.LastBidSize);
            bar4.LastAskSize.Should().Be(quoteBar.LastAskSize);
            bar1.Price.Should().Be(quoteBar.Price);
        }