Пример #1
0
        public static async Task <DataTable> RunYahooSource(string stockId, DateTime start, DateTime end, DataTable DtStocks)
        {
            _country  = Country.USA;
            _config   = GetConfiguration();
            _provider = new StockQuoteSourceProvider(_config, _country);

            IStockQuoteDataSource yahooDataSource = GetYahooDataSource(_provider);

            if (yahooDataSource == null)
            {
                Console.WriteLine("Error : Yahoo data source object is null");
                return(new DataTable());
            }

            IReadOnlyList <IStockQuoteFromDataSource> results = await yahooDataSource.GetHistoricalQuotesAsync(_country, stockId, start, end, WriteToError);

            Object[] stockPrice = new Object[results.Count + 1];
            stockPrice[0] = stockId.ToUpper();
            int i = 1;

            foreach (IStockQuoteFromDataSource quote in results)
            {
                if (DtStocks.Rows.Count == 0)
                {
                    DtStocks.Columns.Add(quote.TradeDateTime.ToShortDateString(), typeof(Double));
                }
                stockPrice[i] = quote.ClosePrice;
                i++;
            }

            DtStocks.Rows.Add(stockPrice);
            PrintToCsv(DtStocks);
            return(DtStocks);
        }
        public void GetMostRecentQuoteTest(Country country, string stockId)
        {
            IConfiguration        config      = TestServiceProvider.GetTestConfiguration();
            IStockQuoteProvider   provider    = new StockQuoteSourceProvider(config, country);
            IStockQuoteDataSource yahooSource = provider.GetStockDataSources().FirstOrDefault(a => a.Source == Contracts.StockQuoteSource.Yahoo);

            Assert.NotNull(yahooSource);

            IStockQuoteFromDataSource result = yahooSource.GetMostRecentQuoteAsync(country, stockId, WriteToErrorLogAction).Result;

            Assert.NotNull(result);
            Assert.True(result.IsValid);
        }
Пример #3
0
        static async Task RunAlphaVantageSource(string stockId)
        {
            IStockQuoteDataSource alphaVantageDataSource = GetAlphaVantageDataSource(_provider);

            if (alphaVantageDataSource == null)
            {
                Console.WriteLine("Error : Yahoo data source object is null");
                return;
            }

            IStockQuoteFromDataSource quote = await alphaVantageDataSource.GetMostRecentQuoteAsync(_country, stockId, WriteToError).ConfigureAwait(false);

            if (quote != null)
            {
                PrintQuote(quote);
            }
        }
        /// <summary>
        /// Get a list of stock data source
        /// </summary>
        /// <returns></returns>
        public IReadOnlyList <IStockQuoteDataSource> GetStockDataSources()
        {
            if (_dataSourceList == null)
            {
                _dataSourceList = new List <IStockQuoteDataSource>();

                // Yahoo is common for now
                IStockQuoteDataSource yahooDataSource = CreateStockSource(Contracts.StockQuoteSource.Yahoo);

                if (yahooDataSource != null)
                {
                    _dataSourceList.Add(yahooDataSource);
                }

                switch (_country)
                {
                case Country.Taiwan:
                    // TODO : add later
                    break;

                case Country.USA:
                    IStockQuoteDataSource alphaVantageSource = CreateStockSource(Contracts.StockQuoteSource.AlphaVantage);

                    if (alphaVantageSource != null)
                    {
                        _dataSourceList.Add(CreateStockSource(Contracts.StockQuoteSource.AlphaVantage));
                    }

                    break;

                case Country.HK:
                    // TODO: add later if there exists a better source for HK
                    break;

                case Country.Test:
                    // There is no data source for Test
                    break;

                default:
                    break;
                }
            }

            return(_dataSourceList);
        }
Пример #5
0
        //just for tests
        public static async Task <IReadOnlyList <IStockQuoteFromDataSource> > GetFromYahooSourceAsList(string stockId, DateTime start, DateTime end)
        {
            _country  = Country.USA;
            _config   = GetConfiguration();
            _provider = new StockQuoteSourceProvider(_config, _country);


            IStockQuoteDataSource yahooDataSource = GetYahooDataSource(_provider);

            if (yahooDataSource == null)
            {
                Console.WriteLine("Error : Yahoo data source object is null");
                return(new List <IStockQuoteFromDataSource>());
            }

            var results = await yahooDataSource
                          .GetHistoricalQuotesAsync(_country, stockId, start, end, WriteToError);

            return(results);
        }
        public void GetHistoricalQuotesTest(Country country, string stockId)
        {
            IConfiguration        config      = TestServiceProvider.GetTestConfiguration();
            IStockQuoteProvider   provider    = new StockQuoteSourceProvider(config, country);
            IStockQuoteDataSource yahooSource = provider.GetStockDataSources().FirstOrDefault(a => a.Source == Contracts.StockQuoteSource.Yahoo);

            Assert.NotNull(yahooSource);

            DateTime start = new DateTime(2018, 3, 12);
            DateTime end   = new DateTime(2018, 3, 16);

            IReadOnlyList <IStockQuoteFromDataSource> results = yahooSource.GetHistoricalQuotesAsync(country, stockId, start, end, WriteToErrorLogAction).Result;

            Assert.NotNull(results);
            Assert.Equal(5, results.Count);

            foreach (IStockQuoteFromDataSource data in results)
            {
                Assert.True(data.IsValid);
            }
        }