Пример #1
0
        public List <TickerModel> GetOverview(AvailableExchanges exchangeName, string market)
        {
            var result = new List <TickerModel>();

            try
            {
                var symbolsOfMarket = new List <string>();

                //TODO paging sorting etc
                var exchangeMarket = _context.Exchange
                                     .FirstOrDefault(f => f.Id == (int)exchangeName)
                                     .Market.FirstOrDefault(f => !string.IsNullOrWhiteSpace(market) ? f.Name == market : true);
                if (exchangeMarket == null)
                {
                    return(result);
                }

                symbolsOfMarket = exchangeMarket.Symbol.Select(s => s.Name).ToList();

                if (string.IsNullOrWhiteSpace(symbolsOfMarket.FirstOrDefault()))
                {
                    return(result);
                }

                result = _exchangesData.GetTickersFor(exchangeName, symbolsOfMarket);
            }
            catch (Exception ex)
            {
                _logger.Information($"ExchangesService.GetOverview(exchangeName: {exchangeName}, market: {market})");
                _logger.Error(ex.Message);
                return(result);
            }
            return(result);
        }
Пример #2
0
        public ExtendedInfoModel GetDetails(AvailableExchanges name)
        {
            var result = new ExtendedInfoModel();

            try
            {
                var exchange = _context.Exchange.FirstOrDefault(f => f.Name == name.ToString());
                result = new ExtendedInfoModel
                {
                    Name        = exchange.Name,
                    ImageUrl    = exchange.ImageUrl,
                    Country     = exchange.Country,
                    Type        = exchange.Type,
                    Description = exchange.Description,
                    Markets     = exchange.Market.Where(w => w.Symbol.Any()).Select(m => m.Name).ToList()
                };
            }
            catch (Exception ex)
            {
                _logger.Information($"ExcangesService.GetDetails(name: {name})");
                _logger.Error(ex.Message);
                return(result);
            }
            return(result);
        }
Пример #3
0
        public IBaseExchangeClient GetClientInstance(AvailableExchanges exchangeName)
        {
            switch (exchangeName)
            {
            case AvailableExchanges.Binance:
                return(_dataClient.Binance);

            case AvailableExchanges.Bitfinex:
                return(_dataClient.Bitfinex);

            case AvailableExchanges.Bitstamp:
                return(_dataClient.Bitstamp);

            case AvailableExchanges.Gdax:
                return(_dataClient.Gdax);

            case AvailableExchanges.Gemini:
                return(_dataClient.Gemini);

            case AvailableExchanges.Kraken:
                return(_dataClient.Kraken);

            case AvailableExchanges.Okex:
                return(_dataClient.Okex);

            case AvailableExchanges.Poloniex:
                return(_dataClient.Poloniex);

            default:
                return(null);
            }
        }
Пример #4
0
        public bool SaveSymbolsForExchange(AvailableExchanges name)
        {
            try
            {
                IBaseExchangeClient exchangeClient = _exchangesData.GetClientInstance(name);
                var symbols = exchangeClient.GetSymbols().ToList();
                List <MarketModel> markets = FindAndPopulateDistinctMarketsForExchange(symbols);

                #region For Testing
                ////test if all symbols are distributed to different markets
                //var totalSimbolCount = symbols.Count;
                //var simbolCountInMarkets = 0;
                //foreach (var market in markets)
                //{
                //    simbolCountInMarkets += market.CurrencyPairs.Count;
                //}
                //if (simbolCountInMarkets == totalSimbolCount)
                //{
                //    //success
                //    totalSimbolCount = 0;
                //}
                #endregion

                var exchange = _context.Exchange.FirstOrDefault(e => e.Name == name.ToString());
                if (exchange.Market.Any())
                {
                    return(false);
                }
                foreach (var market in markets)
                {
                    var marketToSave = new Market
                    {
                        Exchange = exchange,
                        Name     = market.Name,
                        StatusId = (int)Statuses.Active,
                    };
                    _context.Market.Add(marketToSave);

                    foreach (var pair in market.Pairs)
                    {
                        var symbolToSave = new Symbol
                        {
                            Market   = marketToSave,
                            Name     = pair,
                            StatusId = (int)Statuses.Active
                        };
                        _context.Symbol.Add(symbolToSave);
                    }
                }
                _context.SaveChanges();
            }
            catch (Exception ex)
            {
                _logger.Information($"ExchangesService.SaveSymbolsForExchange(name: {name})");
                _logger.Error(ex.Message);
                return(false);
            }
            return(true);
        }
Пример #5
0
        public List <TickerModel> GetTickersFor(AvailableExchanges exchangeName, List <string> symbolsOfMarket)
        {
            _exchangeName    = exchangeName;
            _symbolsOfMarket = symbolsOfMarket;

            if (!DataLoaded || DataOutdated)
            {
                FetchData();
            }
            SelectDataToQuery();
            return(PopulateTickerModelResult());
        }
Пример #6
0
        public List <TickerModel> MockTickersFor(AvailableExchanges exchangeName, List <string> symbolsOfMarket)
        {
            var result = new List <TickerModel>();

            result = symbolsOfMarket.Select(symbol => new TickerModel
            {
                Symbol = symbol,
                Price  = 0,
                Bid    = 0,
                Ask    = 0,
                Volume = new VolumeModel()
            }).ToList();
            return(result);
        }
Пример #7
0
        public bool DeleteAllSymbolsForExchange(AvailableExchanges name)
        {
            try
            {
                var exchange = _context.Exchange.FirstOrDefault(e => e.Name == name.ToString());

                _context.Symbol.RemoveRange(exchange.Market.SelectMany(s => s.Symbol));
                _context.Market.RemoveRange(exchange.Market);
                _context.SaveChanges();
            }
            catch (Exception ex)
            {
                _logger.Information($"ExchangesService.DeleteAllSymbolsForExchange(name: {name})");
                _logger.Error(ex.Message);
                return(false);
            }
            return(true);
        }
Пример #8
0
        public IList <TickerModel> Overview(AvailableExchanges exchangeName, string market)
        {
            var result = _exchangesService.GetOverview(exchangeName, market);

            return(result);
        }
Пример #9
0
        public JsonResult DeleteSymbols(AvailableExchanges name)
        {
            var result = _exchangesService.DeleteAllSymbolsForExchange(name);

            return(Json(result));
        }
Пример #10
0
        public IActionResult Details(AvailableExchanges name)
        {
            var model = _exchangesService.GetDetails(name);

            return(View(model));
        }