/// <summary> /// Conversion method for received data /// </summary> /// <param name="data"></param> /// <returns></returns> public DataPointImpl Parse(string data) { //Get json TickModel message = JSON.Deserialize <TickModel>(data); if (message.lastUpdated < 0) { return(null); } DateTime occuredutc = Time.FromUnixTime(message.lastUpdated, true); DateTime occured = occuredutc.ConvertTo(TimeZone.Utc, TimeZone.NewYork); //Deserialize tick Tick tickdata = new Tick(GetQuantlerTicker(message.symbol), DataSource) { AskPrice = message.askPrice, BidPrice = message.bidPrice, AskSize = message.askSize, BidSize = message.bidSize, Depth = 0, Occured = occured, TimeZone = TimeZone.NewYork, Size = message.lastSaleSize, TradePrice = message.lastSalePrice }; return(tickdata); }
/// <summary> /// 装载MODEL /// </summary> /// <param name="configModel"></param> /// <param name="priceModel"></param> /// <returns></returns> private LatePriceCacheBase InsertPrice(VmpConfigModel configModel, LatePriceModel priceModel) { ///默认交易深度50条 int specifiedQuantity = 50; int askscount = priceModel.Asks.Count; int bidscount = priceModel.Bids.Count; if (askscount > specifiedQuantity) { askscount = specifiedQuantity; } if (bidscount > specifiedQuantity) { askscount = specifiedQuantity; } List <PriceModel> ListAsks = priceModel.Asks.OrderBy(p => p.price).Take(specifiedQuantity).ToList(); List <PriceModel> ListBids = priceModel.Bids.OrderByDescending(p => p.price).Take(specifiedQuantity).ToList(); List <TickModel> bidTick = new List <TickModel>(); for (int i = 0; i < bidscount; i++) { TickModel bidMode = new TickModel(); bidMode.Amount = ListBids[i].amount; bidMode.Price = ListBids[i].price; bidMode.Sort = i; bidTick.Add(bidMode); } List <TickModel> askTick = new List <TickModel>(); for (int k = 0; k < askscount; k++) { TickModel askModel = new TickModel(); askModel.Amount = ListAsks[k].amount; askModel.Price = ListAsks[k].price; askModel.Sort = k; askTick.Add(askModel); } LatePriceCacheBase priceCache = new LatePriceCacheBase(); LatePriceCacheBase tempPrice = MapProvider.Map(priceCache, configModel); tempPrice.LateTime = DateTime.Now; tempPrice.BuyPrice = ListBids.FirstOrDefault().price; tempPrice.BuyCount = ListBids.FirstOrDefault().amount; tempPrice.SellPrice = ListAsks.FirstOrDefault().price; tempPrice.SellCount = ListAsks.FirstOrDefault().amount; tempPrice.Asks = askTick; tempPrice.Bids = bidTick; return(tempPrice); }
/// <summary> /// Gets all of a characters raids using a lookback period specified as an integer representing days /// </summary> /// <param name="pCharacterName">The character name, case-insensitive</param> /// <param name="pLookback">The lookback period specified in days</param> /// <returns></returns> public static IEnumerable GetCharacterRaids(string pClientId, string pCharacterName, int pLookback = 0) { Dictionary <int, RaidModel> vRaids = new Dictionary <int, RaidModel>(); using (opendkpContext vDatabase = new opendkpContext()) { var vCharacter = vDatabase.Characters.First(x => x.ClientId.Equals(pClientId) && x.Name.Equals(pCharacterName, StringComparison.InvariantCultureIgnoreCase)); List <TicksXCharacters> vResult = null; if (pLookback > 0) { vResult = vDatabase.TicksXCharacters .Include("IdTickNavigation.Raid.IdPoolNavigation") .Where(x => x.ClientId.Equals(pClientId) && x.IdCharacter == vCharacter.IdCharacter && DateTime.Compare(x.IdTickNavigation.Raid.Timestamp.Date, DateTime.Now.AddDays(pLookback * -1).Date) >= 0) .ToList(); } else { vResult = vDatabase.TicksXCharacters .Where(x => x.ClientId.Equals(pClientId) && x.IdCharacter == vCharacter.IdCharacter) .Include("IdTickNavigation.Raid.IdPoolNavigation") .ToList(); } foreach (var vModel in vResult) { TickModel vTick = new TickModel(vModel.IdTickNavigation); if (!vRaids.ContainsKey(vModel.IdTickNavigation.RaidId)) { RaidModel vRaid = new RaidModel(vModel.IdTickNavigation.Raid); vRaid.TotalTicks = vDatabase.Ticks.Include("Raid").Count(x => x.ClientId.Equals(pClientId) && x.RaidId == vRaid.IdRaid); vRaids.Add(vModel.IdTickNavigation.RaidId, vRaid); } vRaids[vModel.IdTickNavigation.RaidId].Ticks.Add(vTick); } } return(vRaids.Values.ToList()); }