public void TestUppercase() { var yahooFinanceClient = new YahooFinanceClient(); var yahooStockCode = yahooFinanceClient.GetYahooStockCode("ASX", "AFI"); Assert.Equal("AFI.AX", yahooStockCode); }
public void TestLowerCaseSymbol() { var yahooFinanceClient = new YahooFinanceClient(); var yahooStockCode = yahooFinanceClient.GetYahooStockCode("ASX", "afi"); Assert.Equal("AFI.AX", yahooStockCode); }
public void TestLowerCaseExchange() { var yahooFinanceClient = new YahooFinanceClient(); var yahooStockCode = yahooFinanceClient.GetYahooStockCode("asx", "AFI"); Assert.Equal("AFI.AX", yahooStockCode); }
public YahooDownloader(IUnitOfWork uow, ILogger <YahooDownloader> logger) { this.logger = logger; logger.LogInformation("YahooDownloader created"); this.uow = uow; _yahooFinance = new YahooFinanceClient(); }
public async Task CheckCancelledResult(string historyType, int after) { var client = new YahooFinanceClient(logger); var cts = new CancellationTokenSource(); cts.CancelAfter(after); const string symbol = "MSFT"; switch (historyType) { case "div": await client.History.GetDividendsAsync(symbol, Instant.MinValue, clock.GetCurrentInstant(), cancellationToken : cts.Token).CheckCancelledAsync(); break; case "history": await client.History.GetPricesAsync(symbol, Instant.MinValue, clock.GetCurrentInstant(), cancellationToken : cts.Token).CheckCancelledAsync(); break; case "split": await client.History.GetSplitsAsync(symbol, Instant.MinValue, clock.GetCurrentInstant(), cancellationToken : cts.Token).CheckCancelledAsync(); break; default: throw new Xunit.Sdk.XunitException("Invalid history type"); } }
public async Task GetPricesWorksCorrectly(string symbol) { var client = new YahooFinanceClient(logger); var result = await client.History.GetPricesAsync(symbol, clock.GetCurrentInstant().Minus(Duration.FromDays(365)), clock.GetCurrentInstant()); result.AssertValidResponse(); }
public PortfolioLogic(YahooFinanceClient yahooFinanceClient, TransactionDataManager transactionDataManager, ILogger <PortfolioLogic> logger, CurrencyClient currencyClient, CurrencyDataManager currencyDataManager) { _yahooFinanceClient = yahooFinanceClient; _transactionDataManager = transactionDataManager; _logger = logger; _currencyClient = currencyClient; _currencyDataManager = currencyDataManager; }
public void TestInvalidExchange() { var exchange = "ABC"; var yahooFinanceClient = new YahooFinanceClient(); var exception = Assert.Throws <Exception>(() => yahooFinanceClient.GetYahooStockCode("ABC", "AFI")); Assert.Equal($"The \"{exchange}\" exchange is not supported.", exception.Message); }
public async Task GetSplitsWorksCorrectly(string symbol) { var client = new YahooFinanceClient(logger); var result = await client.History.GetSplitsAsync(symbol, Instant.MinValue, clock.GetCurrentInstant()); result.AssertValidResponse(); }
public async Task IncorrectLookupShowsErrorResponse() { var client = new YahooFinanceClient(logger); var result = await client.Quote.LookupAsync(Array.Empty <string>()); Assert.True(result.HasError); Assert.NotNull(result.Error); }
public void ReadMeExample() { string exchange = "ASX"; string symbol = "AFI"; YahooFinanceClient yahooFinance = new YahooFinanceClient(); string yahooStockCode = yahooFinance.GetYahooStockCode(exchange, symbol); List <YahooHistoricalPriceData> yahooPriceHistory = yahooFinance.GetDailyHistoricalPriceData(yahooStockCode); List <YahooHistoricalDividendData> yahooDividendHistory = yahooFinance.GetHistoricalDividendData(yahooStockCode); }
public void TestRealtimeDataGerman() { var symbol = "ARL.DE"; var yahooFinance = new YahooFinanceClient(); var yahooRealTimeData = yahooFinance.GetRealTimeData(symbol); Assert.Equal("ARL.DE", yahooRealTimeData.Symbol); }
public void TestRealtimeDataDirect() { var symbol = "CSCO"; var yahooFinance = new YahooFinanceClient(); var yahooRealTimeData = yahooFinance.GetRealTimeData(symbol); Assert.Equal("CSCO", yahooRealTimeData.Symbol); }
public async Task CheckCancelledResult(int after) { var client = new YahooFinanceClient(logger); var cts = new CancellationTokenSource(); cts.CancelAfter(after); await client.Quote.LookupAsync("O", cts.Token).CheckCancelledAsync(); }
public async Task LookupWorks(string[] symbols, int results) { var client = new YahooFinanceClient(logger); var result = await client.Quote.LookupAsync(symbols); result.AssertValidResponse(); Assert.Equal(results, result.Data.Count); }
public void TestWeeklyPriceHistoy() { var exchange = "ASX"; var symbol = "AFI"; var yahooFinance = new YahooFinanceClient(); var yahooStockCode = yahooFinance.GetYahooStockCode(exchange, symbol); var yahooPriceHistory = yahooFinance.GetWeeklyHistoricalPriceData(yahooStockCode, new DateTime(2017, 1, 1), new DateTime(2017, 4, 30)); Assert.Equal(17, yahooPriceHistory.Count); }
public void TestRealtimeData() { var exchange = "ASX"; var symbol = "AFI"; var yahooFinance = new YahooFinanceClient(cookie, crumb); var yahooStockCode = yahooFinance.GetYahooStockCode(exchange, symbol); var yahooRealTimeData = yahooFinance.GetRealTimeData(yahooStockCode); Assert.Equal("AFI.AX", yahooRealTimeData.Symbol); }
public void TestMonthlyPriceHistoy() { var exchange = "ASX"; var symbol = "AFI"; var yahooFinance = new YahooFinanceClient(cookie, crumb); var yahooStockCode = yahooFinance.GetYahooStockCode(exchange, symbol); var yahooPriceHistory = yahooFinance.GetMonthlyHistoricalPriceData(yahooStockCode, new DateTime(2016, 7, 1), new DateTime(2016, 7, 30)); Assert.Equal(1, yahooPriceHistory.Count); }
public void TestDividendHistory() { var exchange = "ASX"; var symbol = "ANN"; var yahooFinance = new YahooFinanceClient(cookie, crumb); var yahooStockCode = yahooFinance.GetYahooStockCode(exchange, symbol); var yahooDividendHistory = yahooFinance.GetHistoricalDividendData(yahooStockCode, new DateTime(2016, 1, 1), new DateTime(2016, 7, 30)); Assert.Equal(1, yahooDividendHistory.Count); }
public HistoricalPriceData GetLastestHistoricalPriceFetchIfNotAvailable(string stockCode) { var historicalData = GetLatestHistoricalPrice(stockCode); var dataExistsInDatabase = historicalData != null && DateTime.Today.AddDays(-1) > historicalData.Date; if (dataExistsInDatabase) { return historicalData; } var yahooFinanceApi = new YahooFinanceClient(); List<YahooHistoricalPriceData> yahooData; if (GetHistoricalPriceAny(stockCode)) { yahooData = yahooFinanceApi.GetDailyHistoricalPriceData(stockCode, DateTime.Today, DateTime.Today.AddMonths(-1)); } else { yahooData = yahooFinanceApi.GetDailyHistoricalPriceData(stockCode); } var historicalPriceData = new List<HistoricalPriceData>(); foreach (var priceData in yahooData) { var data = new HistoricalPriceData() { Symbol = stockCode, DataSource = "YAHOO", Date = priceData.Date, Open = priceData.Open, High = priceData.High, Low = priceData.Low, Close = priceData.Close, Volume = priceData.Volume, AdjClose = priceData.AdjClose, }; historicalPriceData.Add(data); if (!GetHistoricalPriceExists(data)) { AddHistoricalPrice(data); } } SaveAll(); return GetLatestHistoricalPrice(stockCode); }
public void GetTick() { string cookie = "31km9s9dm7p94&b=3&s=3d"; string crumb = "gFXT6LioH24"; string exchange = "NSE"; //"ASX"; string symbol = "INFY"; // "AFI"; YahooFinanceClient yahooFinance = new YahooFinanceClient(cookie, crumb); string yahooStockCode = yahooFinance.GetYahooStockCode(exchange, symbol); List <YahooHistoricalPriceData> yahooPriceHistory = yahooFinance.GetDailyHistoricalPriceData(yahooStockCode); List <YahooHistoricalDividendData> yahooDividendHistory = yahooFinance.GetHistoricalDividendData(yahooStockCode); YahooRealTimeData yahooRealTimeData = yahooFinance.GetRealTimeData(yahooStockCode); }
Task <ICollection <HistoricalQuote> > IYahooFinanceService.GetDailyHistoricalPriceData(string stockExchange, string companySymbol, DateTime?startDate, DateTime?endDate) { var yahooFinance = new YahooFinanceClient(); var yahooStockCode = yahooFinance.GetYahooStockCode(stockExchange, companySymbol); var yahooPriceHistory = yahooFinance.GetDailyHistoricalPriceData(yahooStockCode); var priceHistory = _mapper.Map <ICollection <HistoricalQuote> >(yahooPriceHistory); foreach (var historicalQuote in priceHistory) { historicalQuote.Symbol = $"{stockExchange}:{companySymbol}"; } return(Task.FromResult(priceHistory)); }
private void button1_Click(object sender, EventArgs e) { string cookie = GetYahooBCookieValueByName(); string crumb = "enp5cLfls8Q"; string exchange = "NYSE"; string symbol = "enp5cLfls8Q"; YahooFinanceClient yahooFinance = new YahooFinanceClient(cookie, crumb); string yahooStockCode = yahooFinance.GetYahooStockCode(exchange, symbol); List <YahooHistoricalPriceData> yahooPriceHistory = yahooFinance.GetDailyHistoricalPriceData(yahooStockCode); List <YahooHistoricalDividendData> yahooDividendHistory = yahooFinance.GetHistoricalDividendData(yahooStockCode); YahooRealTimeData yahooRealTimeData = yahooFinance.GetRealTimeData(yahooStockCode); }
public async Task SearchReturnsCorrectSymbol(string symbol, string isin) { var client = new YahooFinanceClient(logger); var resultSymbol = await client.Search.SearchAsync(symbol); var resultIsin = await client.Search.SearchAsync(isin); resultSymbol.AssertValidResponse(); resultIsin.AssertValidResponse(); var firstResultSymbol = resultSymbol.Data.First(); var firstResultIsin = resultIsin.Data.First(); Assert.Equal(firstResultSymbol, firstResultIsin); Assert.Equal(symbol, firstResultSymbol.Symbol); Assert.Equal(symbol, firstResultIsin.Symbol); }
public List<HistoricalDividendData> GetHistoricalDividendData(string exchange, string symbol) { var yahooFinanceApi = new YahooFinanceClient(); var yahooData = yahooFinanceApi.GetHistoricalDividendData(yahooFinanceApi.GetYahooStockCode(exchange, symbol)); var historicalDividendData = new List<HistoricalDividendData>(); foreach (var dividendData in yahooData) { historicalDividendData.Add(new HistoricalDividendData() { DataSource = "YAHOO", Date = dividendData.Date, Dividend = dividendData.Dividend, }); } return historicalDividendData; }
public async Task IncorrectLookupShowsErrorResponseWhenIncorrectSymbol(string historyType) { var client = new YahooFinanceClient(logger); switch (historyType) { case "div": AssertHasError(await client.History.GetDividendsAsync(string.Empty, clock.GetCurrentInstant().Minus(Duration.FromDays(365)), clock.GetCurrentInstant())); break; case "history": AssertHasError(await client.History.GetPricesAsync(string.Empty, clock.GetCurrentInstant().Minus(Duration.FromDays(365)), clock.GetCurrentInstant())); break; case "split": AssertHasError(await client.History.GetSplitsAsync(string.Empty, clock.GetCurrentInstant().Minus(Duration.FromDays(365)), clock.GetCurrentInstant())); break; default: throw new Xunit.Sdk.XunitException("Invalid history type"); } }