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);
        }
Beispiel #12
0
        public void TestRealtimeDataGerman()
        {
            var symbol = "ARL.DE";

            var yahooFinance = new YahooFinanceClient();

            var yahooRealTimeData = yahooFinance.GetRealTimeData(symbol);

            Assert.Equal("ARL.DE", yahooRealTimeData.Symbol);
        }
Beispiel #13
0
        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);
        }
Beispiel #16
0
        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);
		}
Beispiel #21
0
        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);
        }
Beispiel #24
0
        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);
        }
Beispiel #25
0
		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");
            }
        }