public async Task <List <string> > CheckDownFive() { var StocksToCheck = ParseUsersStocks.getUpFiveStocks(); var listToReturn = new List <string>(); foreach (var stock in StocksToCheck) { StockUrl currentURL = new StockUrl { Ticker = stock, IntradayFrequency = null, AmountOFData = "full", TimeSeries = "TIME_SERIES_DAILY", Description = "Time Series (Daily)" }; var data = await this.GetStockData(currentURL); var first = 0; var firstStock = data.ElementAt(first); var secondStock = data.ElementAt(first + 1); var percentChange = (firstStock.close - secondStock.close) / secondStock.close; if (percentChange <= -0.05) { listToReturn.Add(stock); } } return(listToReturn); }
public static string Parse(StockUrl stock) { if (stock.TimeSeries == "TIME_SERIES_INTRADAY") { return(fullURL = "https://www.alphavantage.co/query?function=" + stock.TimeSeries + "&symbol=" + stock.Ticker + "&interval=" + stock.IntradayFrequency + "&outputsize=" + stock.AmountOFData + "&apikey=1C7TYKVEGLDRJPAL"); } else { return(fullURL = "https://www.alphavantage.co/query?function=" + stock.TimeSeries + "&symbol=" + stock.Ticker + "&outputsize=" + stock.AmountOFData + "&apikey=1C7TYKVEGLDRJPAL"); } }
public async Task <List <string> > CheckUpFive() { //gets the tickers of the stocks we should check //would save some time here to check if there are multiple stocks with the same ticker and not have to run each one var StocksToCheck = ParseUsersStocks.getUpFiveStocks(); var listToReturn = new List <string>(); foreach (var stock in StocksToCheck) { StockUrl currentURL = new StockUrl { Ticker = stock, IntradayFrequency = null, AmountOFData = "full", TimeSeries = "TIME_SERIES_DAILY", Description = "Time Series (Daily)" }; var data = await this.GetStockData(currentURL); var first = 0; var firstStock = data.ElementAt(first); var secondStock = data.ElementAt(first + 1); var percentChange = (firstStock.close - secondStock.close) / secondStock.close; if (percentChange >= 0.05) { listToReturn.Add(stock); } } return(listToReturn); }
public async Task <List <string> > CheckMovingAverage() { var StocksToCheck = ParseUsersStocks.getUpFiveStocks(); var listToReturn = new List <string>(); foreach (var stock in StocksToCheck) { StockUrl currentURL = new StockUrl { Ticker = stock, IntradayFrequency = null, AmountOFData = "full", TimeSeries = "TIME_SERIES_DAILY", Description = "Time Series (Daily)" }; var data = await this.GetStockData(currentURL); var first = 0; var firstPlusTwenty = first + 20; List <double> myList = new List <double> { }; for (int i = 0; i < firstPlusTwenty; i++) { var currentStock = data.ElementAt(i); myList.Add(currentStock.close); } var avg = myList.Sum() / 20; var todaysStock = data.ElementAt(first).close; var yesterdayStock = data.ElementAt(first + 1).close; if (todaysStock > avg && yesterdayStock < avg) { listToReturn.Add(stock); } else if (todaysStock < avg && yesterdayStock > avg) { listToReturn.Add(stock); } } return(listToReturn); }
public async Task <List <Stock> > PostStocks([FromBody] StockUrl urlParts) { var fullUrl = ParseUrl.Parse(urlParts); return(await _stocks.CallStockApi(fullUrl, urlParts)); }
public async Task <List <Stock> > GetStockData(StockUrl urlParts) { var fullUrl = ParseUrl.Parse(urlParts); return(await _stocks.CallStockApi(fullUrl, urlParts)); }
public async Task <List <Stock> > CallStockApi(string url, StockUrl URL) { using (HttpClient client = new HttpClient()) { var result = await client.GetStringAsync(url); var BigDic = JsonConvert.DeserializeObject <Dictionary <string, Dictionary <string, object> > >(result); List <Stock> AllStocks = new List <Stock>(); foreach (var item in BigDic) { if (item.Key == "Meta Data") { MetaData MyMetaData = new MetaData(); foreach (var MetaDataData in item.Value) { switch (MetaDataData.Key) { case "1. Information": MyMetaData.Information = MetaDataData.Value.ToString(); break; case "2. Symbol": MyMetaData.Ticker = MetaDataData.Value.ToString(); break; case "3. Last Refreshed": MyMetaData.LastRefreshed = DateTime.Parse(MetaDataData.Value.ToString()); break; case "4. Interval": MyMetaData.Interval = MetaDataData.Value.ToString(); break; case "5. Output Size": MyMetaData.OutputSize = MetaDataData.Value.ToString(); break; case "6. Time Zone": MyMetaData.TimeZone = MetaDataData.Value.ToString(); break; } } } else if (item.Key == URL.Description) { foreach (var SmolDic in item.Value) { Stock Info = new Stock(); DateTime CurrentDate = DateTime.Parse(SmolDic.Key); Info.date = CurrentDate; var stockJObj = SmolDic.Value; var stock = stockJObj as JObject; foreach (var stockData in stock.Children()) { var Jprop = stockData as JProperty; switch (Jprop.Name) { case "1. open": Info.open = double.Parse(Jprop.Value.ToString()); break; case "2. high": Info.high = double.Parse(Jprop.Value.ToString()); break; case "3. low": Info.low = double.Parse(Jprop.Value.ToString()); break; case "4. close": Info.close = double.Parse(Jprop.Value.ToString()); break; case "5. volume": Info.volume = int.Parse(Jprop.Value.ToString()); break; } } AllStocks.Add(Info); } } else { //throw(new) new exception } } return(AllStocks); } }