示例#1
0
        public void Test_GetQuotationsByMaxEndTime()
        {
            var context      = new QuotationContext();
            var providerTime = DateTimeOffset.Now.ToUnixTimeSeconds();
            var arrivedTime  = DateTime.Today.AddHours(10).AddMinutes(10).AddSeconds(10);

            context.Add(new Quotation(_symbol, providerTime, arrivedTime.AddMilliseconds(-100))
            {
                Bid = 1
            });
            context.Add(new Quotation(_symbol, providerTime, arrivedTime.AddMilliseconds(20))
            {
                Bid = 2
            });

            context.Add(new Quotation(_symbol, providerTime, arrivedTime.AddMilliseconds(990))
            {
                Bid = 3
            });
            context.Add(new Quotation(_symbol, providerTime, arrivedTime.AddMilliseconds(1020))
            {
                Bid = 4
            });

            var actual = context.GetQuotationsByMaxEndTime(1, arrivedTime);

            Assert.Equal(actual.Length, 2);
            Assert.Equal(actual[0].Bid, 2);
            Assert.Equal(actual[1].Bid, 3);
        }
        public bool TryGetPrice(QuotationContext context, OpenOrderInfo openOrder, Game game, out Quotation price)
        {
            if (game.Symbol == null)
            {
                throw new ArgumentNullException(nameof(game), "game.Symbol should not be null.");
            }
            var startDateTime = openOrder.ClientPostTime ?? openOrder.ArriveDateTime; //客户端提交时间。


            var prices = context.GetQuotationsByMaxEndTime(game.Symbol.Id, startDateTime);

            price = openOrder.Direction == Direction.Down ? prices.Max() : prices.Min();

            return(price != null);
        }