Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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());
        }