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