Example #1
0
        public GetFormattedDataResponse GetFormattedTickers(GetFormattedDataRequest request)
        {
            RestRequest restRequest = new RestRequest(request.PatterName + "/_search", Method.POST);

            ElasticMultiRequest searchRequest = new ElasticMultiRequest
            {
                query = new ElasticFormattedQuery
                {
                    @bool = new ElasticFormattedBool
                    {
                        filter = new ElasticFormattedFilter
                        {
                            term = new ElasticTermExchangeNr
                            {
                                ExchangeType = request.ExchangeType
                            }
                        },
                        must = new ElasticFormattedMustFilter
                        {
                            term = new ElasticMustPair
                            {
                                PairType = request.PairType
                            }
                        },
                        should = new ElasticFormattedShouldFilter
                        {
                            range = new ElasticRange
                            {
                                Time = new ElasticRangeParameter
                                {
                                    gte = request.From.ToString("yyyy-MM-dd"),
                                    lte = request.To.ToString("yyyy-MM-dd")
                                }
                            }
                        }
                    }
                },
                size = request.Size,
                sort = new List <ElasticSort>
                {
                    new ElasticSort
                    {
                        Time = new ElasticTimeSort()
                    }
                }
            };

            restRequest.AddJsonBody(searchRequest);
            IRestResponse <GetFormattedDataResponse> response = _client.Execute <GetFormattedDataResponse>(restRequest);

            return(response.Data);
        }
        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);
        }