protected override GetHistoricDataResponse Execute(GetHistoricDataRequest request) { // http://www.jarloo.com/get-historical-stock-data/ var results = new List <HistoricalDataDto>(); using (var web = new WebClient()) { var url = "http://ichart.finance.yahoo.com/table.csv?s=" + request.Ticker + "&d=" + request.To.AddMonths(-1).Month + "&e=" + request.To.Day + "&f=" + request.To.Year + "&g=d&a=" + request.From.AddMonths(-1).Month + "&b=" + request.From.Day + "&c=" + request.From.Year + "&ignore=.csv"; Log.Debug(string.Format("URL - {0}", url)); var data = web.DownloadString(url); data = data.Replace("r", ""); var rows = data.Split('\n'); //First row is headers so Ignore it for (var i = 1; i < rows.Length; i++) { if (rows[i].Replace("n", "").Trim() == "") { continue; } var cols = rows[i].Split(','); var historicalDataDto = new HistoricalDataDto { Date = Convert.ToDateTime(cols[0]), Open = Convert.ToDouble(cols[1]), High = Convert.ToDouble(cols[2]), Low = Convert.ToDouble(cols[3]), Close = Convert.ToDouble(cols[4]), Volume = Convert.ToDouble(cols[5]), AdjClose = Convert.ToDouble(cols[6]) }; results.Add(historicalDataDto); } } var response = CreateTypedResponse(); response.Results = results; return(response); }
// @symbol za koj ke se vratat podatoci // lista za sekoj den // mislam deka mapa bi odgovaralo najvekje // datum -> objekt so data so properties 'open, close, low, high, change, changePercentage' // ili neshto slicno public static async Task <IReadOnlyDictionary <DateTimeOffset, HistoricalDataDto> > GetHistoricalData(string symbol) { var API_PATH = $"https://api.iextrading.com/1.0/stock/{symbol}/chart/1m"; API api = new API(); try { var response = await api.CallAPI(API_PATH); if (response.IsSuccessStatusCode) { var historicalDataList = response.Content.ReadAsAsync <List <HistoricalDataDto> >().GetAwaiter().GetResult(); Dictionary <DateTimeOffset, HistoricalDataDto> historicalData = new Dictionary <DateTimeOffset, HistoricalDataDto>(); foreach (var d in historicalDataList) { if (d != null) { Debug.WriteLine("Date: " + d.Date); Debug.WriteLine("Open: " + d.Open); Debug.WriteLine("Close: " + d.Close); Debug.WriteLine("Low: " + d.Low); Debug.WriteLine("High: " + d.High); Debug.WriteLine("Change: " + d.Change); Debug.WriteLine("Change Percentage: " + d.ChangePercent); // stavame se vo recnik kade shto KEY e datumot a VALUE e objekt od HistoricalDataDto so site informacii za toj datum HistoricalDataDto data = new HistoricalDataDto(d.Open, d.High, d.Low, d.Close, d.Volume, d.UnadjustedVolume, d.Change, d.ChangePercent, d.Vwap, d.Label, d.ChangeOverTime); historicalData[d.Date] = data; } } return(historicalData); } return(null); } catch (System.Net.WebException e) { throw e; } }