public Decimal GetTrendByMarket(string currency, string marketId) { var tm = AmountHelper.DateTimeToUnixTimestamp(DateTime.UtcNow); var exchange_stats = _dtoMain.mainDb.GetCollection <ExchangeTicker>("aaexchanges_real_twodays"); DateTimeOffset dateTimeDaily = new DateTimeOffset(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, 0, 0, 0, new TimeSpan(0, 0, 0)).AddDays(-1); long unixTimeDaily = AmountHelper.DateTimeToUnixTimestamp(dateTimeDaily.UtcDateTime); var exchangeStats = exchange_stats.Find(m => m.InCurrency == currency && m.OutCurrency == "BTC" && m.MarketID == marketId && m.Time >= unixTimeDaily).ToList(); Decimal dict24Prev = 0.0m; Decimal dict24Now = 0.0m; int a = 0, b = 0, i = 0; foreach (var ex in exchangeStats) { if (i == 0) { dict24Prev += ex.Last; a++; } else { dict24Now += ex.Last; b++; } i++; } if (a == 0 || b == 0 || dict24Prev == 0) { return(0.0m); } Decimal trend = (dict24Now / b) * 100 / (dict24Prev / a) - 100; return(trend); }
public Dictionary <string, Decimal> GetTrendByMarkets(string currency) { Dictionary <string, Decimal> markets = new Dictionary <string, Decimal>(); var tm = AmountHelper.DateTimeToUnixTimestamp(DateTime.UtcNow); var exchange_stats = _dtoMain.mainDb.GetCollection <ExchangeTicker>("aaexchanges_real_twodays"); DateTimeOffset dateTimeDaily = new DateTimeOffset(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, 0, 0, 0, new TimeSpan(0, 0, 0)).AddDays(-1); long unixTimeDaily = AmountHelper.DateTimeToUnixTimestamp(dateTimeDaily.UtcDateTime); var exchangeStats = exchange_stats.Find(m => m.InCurrency == currency && m.OutCurrency == "BTC" && m.Time >= unixTimeDaily).ToList(); Dictionary <string, List <ExchangeTicker> > marketsList = new Dictionary <string, List <ExchangeTicker> >(); foreach (var mrkt in exchangeStats) { if (!marketsList.ContainsKey(mrkt.MarketID)) { marketsList.Add(mrkt.MarketID, new List <ExchangeTicker>()); marketsList[mrkt.MarketID].Add(mrkt); } else { marketsList[mrkt.MarketID].Add(mrkt); } } foreach (KeyValuePair <string, List <ExchangeTicker> > kv in marketsList) { Decimal dict24Prev = 0.0m; Decimal dict24Now = 0.0m; int a = 0, b = 0, i = 0; foreach (var ex in kv.Value) { if (i == 0) { dict24Prev += ex.Last; a++; } else { dict24Now += ex.Last; b++; } i++; } if (a == 0 || b == 0 || dict24Prev == 0) { markets.Add(kv.Key, 0.0m); continue; } Decimal trend = (dict24Now / b) * 100 / (dict24Prev / a) - 100; markets.Add(kv.Key, trend); } return(markets); }
public List <ExchangesCurrency> GetExchangePrice(string currency, List <Exchanges> extList = null) { List <Exchanges> exchanges = extList; if (exchanges == null) { exchanges = GetExchanges(); } var tm = AmountHelper.DateTimeToUnixTimestamp(DateTime.UtcNow); var exchange_stats = _dtoMain.mainDb.GetCollection <ExchangeTicker>("aaexchanges_real"); var exchangeStats = exchange_stats.Find(m => m.InCurrency == currency && m.OutCurrency == "BTC").SortByDescending(s => s.Volume).ToList(); var lst = new List <ExchangesCurrency>(); if (exchangeStats.Count == 0) { return(lst); } var trends = GetTrendByMarkets(currency); foreach (var ex in exchangeStats) { var exchange = exchanges.FirstOrDefault(m => m.MarketId == ex.MarketID); if (exchange == null) { continue; } string exchangeUrlCoin = currency; if (exchange.ExchangeDirectUrlParam == "lower") { exchangeUrlCoin = exchangeUrlCoin.ToLower(); } var directUrl = string.Format(exchange.ExchangeDirectUrl, exchangeUrlCoin); lst.Add(new ExchangesCurrency() { Buy = ex.Buy, Sell = ex.Sell, Last = ex.Last, Volume = ex.Volume, Change = trends.ContainsKey(ex.MarketID) ? trends[ex.MarketID] : 0.0m, Exchange = exchange.Exchange, ExchangeUrl = exchange.ExchangeUrl, ExchangeDirectUrl = directUrl, Time = ex.Time, MarketID = ex.MarketID }); } return(lst); }
public List <ExchangeHistory> GetHistory(string currency, int days) { int addDays = 0; var tm = AmountHelper.DateTimeToUnixTimestamp(DateTime.UtcNow); DateTimeOffset tmCheck = new DateTimeOffset(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, 3, 0, 0, new TimeSpan(0, 0, 0)); long tmChekDate = ExchangeHelper.DateTimeToUnixTimestamp(tmCheck.UtcDateTime); if (tmChekDate + 60 * 60 < tmChekDate) { addDays = -1; } var exchange_stats = _dtoMain.mainDb.GetCollection <ExchangeTicker>("aaexchanges_real_each"); DateTimeOffset dateTimeYesterday = new DateTimeOffset(DateTime.UtcNow.Year, DateTime.UtcNow.Month, DateTime.UtcNow.Day, 0, 0, 0, new TimeSpan(0, 0, 0)).AddDays(-days + 1 + addDays); long unixTimeHistory = AmountHelper.DateTimeToUnixTimestamp(dateTimeYesterday.UtcDateTime); var exchangeStats = exchange_stats.Find(m => m.InCurrency == currency && m.OutCurrency == "BTC" && m.Time >= unixTimeHistory).ToList(); var history = new List <ExchangeHistory>(); var tmp = new Dictionary <long, List <Decimal> >(); var tmpVolume = new Dictionary <long, Decimal>(); foreach (var ex in exchangeStats) { if (!tmpVolume.ContainsKey(ex.Time)) { tmpVolume.Add(ex.Time, 0.0m); } tmpVolume[ex.Time] += ex.Volume; } foreach (var ex in exchangeStats) { if (tmpVolume.ContainsKey(ex.Time) && tmpVolume[ex.Time] > 0 && ex.Volume * 100 / tmpVolume[ex.Time] < 3) { continue; } if (!tmp.ContainsKey(ex.Time)) { tmp.Add(ex.Time, new List <decimal>()); } tmp[ex.Time].Add(ex.Last); } int i = 1; foreach (var ex in tmp) { if (i > days) { break; } var date = UnixTimeStampToDateTime(ex.Key); var dateStr = date.Day + "-" + date.Month + "-" + date.Year; history.Add(new ExchangeHistory() { Date = dateStr, Price = ex.Value.Average() }); i++; } return(history); }