Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        // @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;
            }
        }