public async System.Threading.Tasks.Task <List <DataBar> > GetHistoricalDataAsync(SecurityType securityType, string ticker, BarSize barSize, DateTime?endDate = null)
        {
            var             client = new AlphaVantageStocksClient(Constants.AlphaVantageApiKey);
            var             HistoricalBarCollection = new List <DataBar>();
            StockTimeSeries timeSeries;

            switch (barSize)
            {
            case BarSize.DAY:
                timeSeries = await client.RequestDailyTimeSeriesAsync(ticker, TimeSeriesSize.Full, adjusted : false);

                break;

            case BarSize.WEEK:
                timeSeries = await client.RequestWeeklyTimeSeriesAsync(ticker, adjusted : false);

                break;

            case BarSize.MONTH:
                timeSeries = await client.RequestMonthlyTimeSeriesAsync(ticker, adjusted : false);

                break;

            default:
                timeSeries = await client.RequestIntradayTimeSeriesAsync(ticker, (IntradayInterval)barSize, TimeSeriesSize.Full);

                break;
            }

            ((List <StockDataPoint>)timeSeries.DataPoints).ForEach(bar => HistoricalBarCollection.Add(new DataBar(bar)));
            return(HistoricalBarCollection);
        }
示例#2
0
        public async void PrintSample()
        {
            var test = new AlphaVantageStocksClient(APIKey.key);
            var data = await test.RequestIntradayTimeSeriesAsync(Ticker, AlphaVantage.Net.Stocks.TimeSeries.IntradayInterval.OneMin, AlphaVantage.Net.Stocks.TimeSeries.TimeSeriesSize.Full);

            using (StreamWriter f = new StreamWriter("SPY.txt"))
            {
                foreach (var d in data.DataPoints)
                {
                    Console.WriteLine($"{Ticker} H:{d.HighestPrice} L:{d.LowestPrice} Diff:{d.HighestPrice - d.LowestPrice} Volume: {d.Volume}");
                    //f.WriteLine($"{Ticker} {d.Time}  Open:{d.OpeningPrice}  H:{d.HighestPrice}  L:{d.LowestPrice}  Diff:{d.HighestPrice - d.LowestPrice}  Volume: {d.Volume}");
                }
            }
        }
示例#3
0
        public async void SaveMinOpenSample()
        {
            var test = new AlphaVantageStocksClient(APIKey.key);
            var data = await test.RequestIntradayTimeSeriesAsync(Ticker, AlphaVantage.Net.Stocks.TimeSeries.IntradayInterval.OneMin, AlphaVantage.Net.Stocks.TimeSeries.TimeSeriesSize.Full);

            using (StreamWriter f = new StreamWriter(Path.Combine(Directory.GetCurrentDirectory(), "SPYopen.txt")))
            {
                foreach (var d in data.DataPoints)
                {
                    //Console.WriteLine($"{Ticker} H:{d.HighestPrice} L:{d.LowestPrice} Diff:{d.HighestPrice - d.LowestPrice} Volume: {d.Volume}");
                    f.WriteLine($"{d.OpeningPrice}");
                }
            }
        }
示例#4
0
        public async static Task <List <StockDataPoint> > GetIntraDayInfo(string symbol, int numDataPoints)
        {
            try
            {
                var avClient = new AlphaVantageStocksClient(API_KEY_ALPHA_VANTAGE);
                var info     = await avClient.RequestIntradayTimeSeriesAsync(symbol, IntradayInterval.OneMin);

                return(info.DataPoints.Take(numDataPoints).ToList());
            }
            catch (Exception e)
            {
                throw;
            }
        }
示例#5
0
        public async Task RequestIntradayTimeSeriesAsync_Test()
        {
            var client = new AlphaVantageStocksClient(ApiKey);

            var result =
                await client.RequestIntradayTimeSeriesAsync(Symbol, IntradayInterval.OneMin, TimeSeriesSize.Compact);

            Assert.NotNull(result);
            Assert.Equal(TimeSeriesType.Intraday, result.Type);
            Assert.Equal(Symbol, result.Symbol);
            Assert.NotNull(result.DataPoints);
            Assert.True(result.DataPoints.All(p =>
                                              p.GetType() == typeof(StockDataPoint) &&
                                              p.GetType() != typeof(StockAdjustedDataPoint)));
        }
示例#6
0
        //don't use? save actual day object instead?
        public async Task UpdateDayFiles() //move to Stock.cs eventually
        {
            StockObj = await APIObj.RequestIntradayTimeSeriesAsync(Ticker, AlphaVantage.Net.Stocks.TimeSeries.IntradayInterval.OneMin, AlphaVantage.Net.Stocks.TimeSeries.TimeSeriesSize.Full);

            DateTime lastDate = DateTime.Now.Date;//StockObj.DataPoints.First().Time.Date;

            foreach (var sdp in StockObj.DataPoints)
            {
                if (sdp.Time.Date != lastDate)
                {
                    lastDate = sdp.Time.Date;
                    //if (JSONDay)
                }
            }
        }
        async Task GetIntraData()
        {
            IntraDataDict.Clear();
            var             client     = new AlphaVantageStocksClient(APIKey);
            StockTimeSeries timeSeries = await client.RequestIntradayTimeSeriesAsync("GE", IntradayInterval.FiveMin, TimeSeriesSize.Compact);    // client.RequestDailyTimeSeriesAsync("GE", TimeSeriesSize.Compact, false);

            foreach (var dataPoint in timeSeries.DataPoints)
            {
                if (DateTime.Now.Date == dataPoint.Time.Date)
                {
                    decimal[] tempDecimal = new decimal[4];
                    tempDecimal[0] = dataPoint.HighestPrice;
                    tempDecimal[1] = dataPoint.LowestPrice;
                    tempDecimal[2] = dataPoint.OpeningPrice;
                    tempDecimal[3] = dataPoint.ClosingPrice;
                    IntraDataDict[dataPoint.Time] = tempDecimal;
                }
            }
        }
示例#8
0
        private async Task InitAPIObj()
        {
            APIObj   = new AlphaVantageStocksClient(APIKey.key);
            StockObj = await APIObj.RequestIntradayTimeSeriesAsync(Ticker, AlphaVantage.Net.Stocks.TimeSeries.IntradayInterval.OneMin, AlphaVantage.Net.Stocks.TimeSeries.TimeSeriesSize.Full);

            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //debugging, dump data to file

            /*string dumpFile = $"SPYDUMP_5-30-2020_11-02am.txt";
             * if (!File.Exists(dumpFile))
             * {
             *  using (StreamWriter f = new StreamWriter(Path.Combine(Directory.GetCurrentDirectory(), dumpFile)))
             *  {
             *      foreach (var sdp in StockObj.DataPoints)
             *      {
             *          string temp = $"Time:{sdp.Time}\tOpen:{sdp.OpeningPrice}\tClose:{sdp.ClosingPrice}\tVolume:{sdp.Volume}";
             *          f.WriteLine(temp);
             *      }
             *  }
             * }*/
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        }
示例#9
0
        public async Task <IReadOnlyCollection <Rate> > DownloadRates()
        {
            //_symbols.;
            var timeSeries = await _client.RequestIntradayTimeSeriesAsync("AAPL", IntradayInterval.ThirtyMin, TimeSeriesSize.Compact);

            //var dateTime
            var dataPoint = timeSeries?.DataPoints?.FirstOrDefault();

            if (dataPoint == null)
            {
                return(Array.Empty <Rate>());
            }

            var rate = new Rate("USD", "AAPL", dataPoint.ClosingPrice, dataPoint.Time)
            {
            };

            return(new List <Rate>()
            {
                rate
            });
        }
示例#10
0
        public async Task <List <int> > GetVolumeSample() //Get the volume for the last 5 trading days by minute?  And reverse it so it's in order from oldest to newest
        {
            Console.WriteLine($"GetVolumeSample: {DateTime.Now}");
            var outList = new List <int>();
            var APIObj  = new AlphaVantageStocksClient(APIKey.key);
            var data    = await APIObj.RequestIntradayTimeSeriesAsync(Ticker, AlphaVantage.Net.Stocks.TimeSeries.IntradayInterval.OneMin, AlphaVantage.Net.Stocks.TimeSeries.TimeSeriesSize.Full);

            Console.WriteLine($"After data retrieved: {DateTime.Now}");

            //outList = data.DataPoints.Select(x => x.Volume);
            foreach (var min in data.DataPoints)
            {
                outList.Add((int)min.Volume);
            }

            Console.WriteLine($"After converted to list: {DateTime.Now}");

            outList.Reverse();

            Console.WriteLine($"After reversed: {DateTime.Now}");

            return(outList);
        }
示例#11
0
        public override async Task <MarketPriceRes> Execute(MarketPriceReq request)
        {
            try
            {
                string          apiKey = plcalc.Common.Properties.Settings.Default.AlphaVantageApiKey;; // enter your API key here
                var             client = new AlphaVantageStocksClient(apiKey);
                StockTimeSeries timeSeries;
                StockDataPoint  data = null;
                switch (request.ApiFunction)
                {
                case ApiFunction.TIME_SERIES_DAILY:
                    timeSeries =
                        await client.RequestDailyTimeSeriesAsync(request.Ticker, TimeSeriesSize.Compact, adjusted : false);

                    if (request.getPreviousClose)
                    {
                        var prevDate = DateTime.Now.DayOfWeek == DayOfWeek.Monday
                                ? DateTime.Now.AddDays(-3).Date
                                : DateTime.Now.Date.AddDays(-1).Date;
                        data = timeSeries.DataPoints.OrderByDescending(a => a.Time)
                               .FirstOrDefault(a => a.Time.Date == prevDate);
                    }
                    else
                    {
                        data = timeSeries.DataPoints.OrderByDescending(a => a.Time).FirstOrDefault();
                    }

                    if (data == null)
                    {
                        return(null);
                    }

                    return(new MarketPriceRes
                    {
                        Ticker = request.Ticker,
                        Date = data.Time,
                        Price = data.ClosingPrice
                    });

                case ApiFunction.TIME_SERIES_INTRADAY:
                    timeSeries =
                        await client.RequestIntradayTimeSeriesAsync(request.Ticker, IntradayInterval.OneMin, TimeSeriesSize.Compact);

                    data = timeSeries.DataPoints.OrderByDescending(a => a.Time).FirstOrDefault();
                    if (data == null)
                    {
                        return(null);
                    }

                    return(new MarketPriceRes
                    {
                        Ticker = request.Ticker,
                        Date = data.Time,
                        Price = data.ClosingPrice
                    });

                default:
                    throw new plcalcException("Invalid apifunction");
                }
            }
            catch (Exception ex)
            {
                //log error
                return(null);
            }
        }