public RealTimePrice GetRealTimePrice(string symbol)
        {
            if (symbol == null)
            {
                throw new ArgumentNullException("Symbols list is null. Cannot get realtime prices.");
            }

            if (_stockPriceDataClient == null)
            {
                _stockPriceDataClient = new StockPriceDataClient(_apiToken, _useProxy);
            }

            return(_stockPriceDataClient.GetRealTimePrice(symbol));
        }
        public List <HistoricalPrice> GetHistoricalPrices(string symbol, DateTime?startDate, DateTime?endDate)
        {
            if (symbol == null)
            {
                throw new ArgumentNullException("Symbol is null, cannot query prices.");
            }

            if (_stockPriceDataClient == null)
            {
                _stockPriceDataClient = new StockPriceDataClient(_apiToken, _useProxy);
            }

            return(_stockPriceDataClient.GetHistoricalPrices(symbol, startDate, endDate));
        }
        public List <RealTimePrice> GetRealTimePrices(string[] symbols)
        {
            if (symbols == null)
            {
                throw new ArgumentNullException("Symbols list is null. Cannot get realtime prices.");
            }

            if (symbols.Length == 0)
            {
                throw new ArgumentNullException("Symbols list is empty. Cannot get realtime prices.");
            }

            if (symbols.Any(x => x == null))
            {
                throw new ArgumentNullException("Symbols list contains null elements. Cannot get realtime prices.");
            }

            if (_stockPriceDataClient == null)
            {
                _stockPriceDataClient = new StockPriceDataClient(_apiToken, _useProxy);
            }

            return(_stockPriceDataClient.GetRealTimePrices(symbols));
        }