コード例 #1
0
        /// <summary>
        /// The ExecuteAsync
        /// </summary>
        /// <param name="cancellationToken">The cancellationToken<see cref="CancellationToken"/></param>
        /// <returns>The <see cref="Task"/></returns>
        public async Task ExecuteAsync(CancellationToken cancellationToken)
        {
            try
            {
                using (var scope = _scopeFactory.CreateScope())
                {
                    var dbContext = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>();
                    var time      = DateTime.Now.ToUniversalTime();

                    var XtcomPrice  = 0.0;
                    var XtcomVolume = 0.0;

                    try
                    {
                        var quoteXtcom = new CoinQuote
                        {
                            Exchange  = "Xt.com",
                            Price     = ((XtcomQuote.Current.price * 100000000) / double.Parse(CoinbaseBtcQuote.Current.amount)) / 100000000,
                            Volume    = XtcomQuote.Current.moneyVol,
                            TimeStamp = time,
                            USDPrice  = XtcomQuote.Current.price
                        };

                        XtcomPrice  = quoteXtcom.Price;
                        XtcomVolume = quoteXtcom.Volume;

                        var totalVolume = XtcomVolume;

                        var quoteAllWeighted = new CoinQuote
                        {
                            Exchange  = "All",
                            Price     = (XtcomPrice * XtcomVolume / totalVolume),
                            Volume    = totalVolume,
                            TimeStamp = time,
                            USDPrice  = double.Parse(CoinbaseBtcQuote.Current.amount) * ((XtcomPrice * XtcomVolume / totalVolume))
                        };

                        dbContext.CoinQuotes.Add(quoteXtcom);
                        dbContext.CoinQuotes.Add(quoteAllWeighted);
                        dbContext.SaveChangesAsync().Wait();
                    }
                    catch (Exception ex)
                    {
                        var log = new Log();
                        log.LogMessage(ex.Message + " " + ex.StackTrace + " " + ex.InnerException);
                        dbContext.Logger.Add(log);
                        dbContext.SaveChangesAsync().Wait();
                    }


                    // Load latest all Last 15 days
                    CoinQuoteResult.Current = dbContext.CoinQuotes.AsEnumerable().Where(x => x.TimeStamp.ToUniversalTime() > DateTime.Now.AddDays(-15)).ToList();
                }
            }
            catch (Exception e)
            {
                Console.Write(e.InnerException);
            }
        }
コード例 #2
0
        /// <summary>
        /// Return a default Coinquote.
        /// </summary>
        /// <returns></returns>
        private CoinQuote DefaultQuote()
        {
            var e = new CoinQuote
            {
                Volume   = 0,
                USDPrice = 0,
                Price    = 0
            };

            return(e);
        }