private List <TickerFormattedDto> LoadTickerFormattedDtos(ExchangePairTypeEnum exchangePairTypeEnum)
        {
            GetFormattedDataRequest tickerRequest = new GetFormattedDataRequest
            {
                From         = DateTime.Now.AddMinutes(-25),
                To           = DateTime.Now,
                PatterName   = _exchangeName.ToString().ToLower() + "_formatted",
                PairType     = (int)exchangePairTypeEnum,
                ExchangeType = _exchangeName == ElasticApiUrlHolder.ExchangeName.CEX ? 1 : 2,
                Size         = 25
            };

            GetFormattedDataResponse response = _elasticClient.GetFormattedTickers(tickerRequest);

            List <TickerFormattedDto> tickers = response?.hits?.hits?.Select(r => r._source).ToList();

            return(tickers);
        }
        public GetChartDataResponse GetChartData(GetChartDataRequest request)
        {
            GetFormattedDataRequest formattedDataRequest = new GetFormattedDataRequest
            {
                PatterName   = request.ExchangeType == 1 ? "cex_formatted" : "poloniex_formatted",
                From         = DateTime.Now.AddMinutes(-25),
                To           = DateTime.Now,
                ExchangeType = request.ExchangeType,
                size         = 300,
                PairType     = (int)ResolvePairTypeEnum(request.Symbol1, request.Symbol2)
            };

            GetFormattedDataResponse  formattedDataResponse = _elasticClient.GetFormattedTickers(formattedDataRequest);
            List <TickerFormattedDto> tickers = formattedDataResponse.hits.hits.Select(r => r._source).ToList();

            GetChartDataResponse response = new GetChartDataResponse
            {
                Success     = true,
                Error       = "",
                ChartPoints = new List <ChartPoint>(),
                EcoPoints   = new Dictionary <int, List <EcoPoint> >
                {
                    { 1, new List <EcoPoint>() },
                    { 2, new List <EcoPoint>() },
                    { 3, new List <EcoPoint>() }
                }
            };

            foreach (TickerFormattedDto corTicker in tickers)
            {
                response.ChartPoints.Add(new ChartPoint
                {
                    High   = corTicker.High,
                    Last   = corTicker.Last,
                    Low    = corTicker.Low,
                    Time   = corTicker.Time,
                    Volume = corTicker.Volume
                });
            }
            string pairName = request.Symbol1.ToLower() + "_" + request.Symbol2.ToLower();

            if (pairName == "btc_eth")
            {
                pairName = "eth_btc";
            }

            if (request.ShowRSI)
            {
                GetEcoIndexDataRequest ecoIndexDataRequest = new GetEcoIndexDataRequest
                {
                    PatterName = request.ExchangeType == 1 ? "cex_eco_index" : "poloniex_eco_index",
                    From       = DateTime.Now.AddMinutes(-25),
                    To         = DateTime.Now,
                    EcoIndexNr = (int)EcoIndexEnum.RSI,
                    size       = 300,
                    PairName   = pairName
                };

                GetEcoIndexDataResponse ecoIndexDataResponse = _elasticClient.GetEcoIndexData(ecoIndexDataRequest);
                List <EcoIndex>         ecoIndexDtos         = ecoIndexDataResponse.hits.hits.Select(r => r._source).ToList();

                List <EcoPoint> rsiPoints = response.EcoPoints.FirstOrDefault(k => k.Key == (int)EcoIndexEnum.RSI).Value;

                foreach (var ecoIndex in ecoIndexDtos)
                {
                    rsiPoints.Add(new EcoPoint
                    {
                        Id    = (int)EcoIndexEnum.RSI,
                        Time  = ecoIndex.Time,
                        Value = ecoIndex.Value
                    });
                }
            }

            if (request.ShowEMA)
            {
                GetEcoIndexDataRequest ecoIndexDataRequest = new GetEcoIndexDataRequest
                {
                    PatterName = request.ExchangeType == 1 ? "cex_eco_index" : "poloniex_eco_index",
                    From       = DateTime.Now.AddMinutes(-25),
                    To         = DateTime.Now,
                    EcoIndexNr = (int)EcoIndexEnum.EMA,
                    size       = 300,
                    PairName   = pairName
                };

                GetEcoIndexDataResponse ecoIndexDataResponse = _elasticClient.GetEcoIndexData(ecoIndexDataRequest);
                List <EcoIndex>         ecoIndexDtos         = ecoIndexDataResponse.hits.hits.Select(r => r._source).ToList();

                List <EcoPoint> emaPoints = response.EcoPoints.FirstOrDefault(k => k.Key == (int)EcoIndexEnum.EMA).Value;

                foreach (var ecoIndex in ecoIndexDtos)
                {
                    emaPoints.Add(new EcoPoint
                    {
                        Id    = (int)EcoIndexEnum.EMA,
                        Time  = ecoIndex.Time,
                        Value = ecoIndex.Value
                    });
                }
            }

            if (request.ShowFI)
            {
                GetEcoIndexDataRequest ecoIndexDataRequest = new GetEcoIndexDataRequest
                {
                    PatterName = request.ExchangeType == 1 ? "cex_eco_index" : "poloniex_eco_index",
                    From       = DateTime.Now.AddMinutes(-25),
                    To         = DateTime.Now,
                    EcoIndexNr = (int)EcoIndexEnum.ForceIndex,
                    size       = 300,
                    PairName   = pairName
                };

                GetEcoIndexDataResponse ecoIndexDataResponse = _elasticClient.GetEcoIndexData(ecoIndexDataRequest);
                List <EcoIndex>         ecoIndexDtos         = ecoIndexDataResponse.hits.hits.Select(r => r._source).ToList();

                List <EcoPoint> emaPoints = response.EcoPoints.FirstOrDefault(k => k.Key == (int)EcoIndexEnum.ForceIndex).Value;

                foreach (var ecoIndex in ecoIndexDtos)
                {
                    emaPoints.Add(new EcoPoint
                    {
                        Id    = (int)EcoIndexEnum.ForceIndex,
                        Time  = ecoIndex.Time,
                        Value = ecoIndex.Value
                    });
                }
            }

            return(response);
        }