コード例 #1
0
        public async Task <IActionResult> DividendArbitrage2(DividendCalendarRequest request)
        {
            var timer = new Stopwatch();

            timer.Start();
            await _dividendProvider.GetDividendCalendarWithPrices2(request);

            timer.Stop();
            return(Ok("Time taken: " + timer.Elapsed.ToString(@"m\:ss\.fff")));
        }
コード例 #2
0
        public async Task <List <DividendCalendarItem2> > GetDividendCalendar2(DividendCalendarRequest input)
        {
            var httpClient = _httpClientFactory.CreateClient();
            var request    = new HttpRequestMessage(HttpMethod.Get, GetStockDividendCalendar(input));

            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            using var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);

            var stream = await response.Content.ReadAsStreamAsync();

            using StreamReader reader       = new StreamReader(stream);
            using JsonTextReader jsonReader = new JsonTextReader(reader);
            JsonSerializer ser    = new JsonSerializer();
            var            result = ser.Deserialize <List <DividendCalendarItem2> >(jsonReader);

            return(result);
        }
コード例 #3
0
ファイル: DividendProvider.cs プロジェクト: Cytra/StocksApi
        public async Task GetDividendCalendarWithPrices2(DividendCalendarRequest request)
        {
            await _stocksRepository.DeleteAllDividendCalendarEntities2();

            await _stocksRepository.DeleteStockPriceEntities();

            var result = await _dividendCalendarService.GetDividendCalendar2(request);

            var stocksToInsert = _mapper.Map <List <DividendCalendarEntity2> >(result);
            await _stocksRepository.SaveDividendCalendarEntities2(stocksToInsert);

            var stockSplits = ListExtensions.Split(result, 10);

            foreach (var stockSplit in stockSplits)
            {
                var stockSymbols = StringExtensions.GetSymbolsString(stockSplit.Select(x => x.Symbol).ToArray());
                var prices       = await _stockPriceService.GetStockPrices(stockSymbols);

                var dbPriceEntities = _mapper.Map <List <StockPriceEntity> >(prices);
                await _stocksRepository.SaveStockPriceEntities(dbPriceEntities);
            }
        }
コード例 #4
0
        private string GetStockDividendCalendar(DividendCalendarRequest input)
        {
            var result = $"https://financialmodelingprep.com/api/v3/stock_dividend_calendar?from={input.From.ToString("yyyy-MM-dd")}&to={input.To.ToString("yyyy-MM-dd")}&apikey={_settings.ApiToken}";

            return(result);
        }
コード例 #5
0
        public async Task <IActionResult> GetDividendCalendar(DividendCalendarRequest request)
        {
            var result = await _dividendProvider.GetDividendCalendar(request);

            return(Ok(result));
        }
コード例 #6
0
        public async Task <IActionResult> DividendArbitrage(DividendCalendarRequest request)
        {
            var result = await _dividendProvider.GetDividendCalendarWithPrices(request);

            return(Ok(result));
        }
コード例 #7
0
ファイル: DividendProvider.cs プロジェクト: Cytra/StocksApi
        public async Task <List <DividendCalendarItem> > GetDividendCalendarWithPrices(DividendCalendarRequest request)
        {
            await _stocksRepository.DeleteAllDividendCalendarEntities();

            var result = await _dividendCalendarService.GetDividendCalendar(request);

            await UpdateStockPrices(result);

            var stocksToInsert = _mapper.Map <List <DividendCalendarEntity> >(result);
            await _stocksRepository.SaveDividendCalendarEntities(stocksToInsert);

            return(result);
        }
コード例 #8
0
ファイル: DividendProvider.cs プロジェクト: Cytra/StocksApi
        public async Task <List <DividendCalendarItem> > GetDividendCalendar(DividendCalendarRequest request)
        {
            var result = await _dividendCalendarService.GetDividendCalendar(request);

            return(result);
        }