Ejemplo n.º 1
0
        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");
     }
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        public async Task <List <Stock> > PostStocks([FromBody] StockUrl urlParts)
        {
            var fullUrl = ParseUrl.Parse(urlParts);

            return(await _stocks.CallStockApi(fullUrl, urlParts));
        }
Ejemplo n.º 6
0
        public async Task <List <Stock> > GetStockData(StockUrl urlParts)
        {
            var fullUrl = ParseUrl.Parse(urlParts);

            return(await _stocks.CallStockApi(fullUrl, urlParts));
        }
Ejemplo n.º 7
0
        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);
            }
        }