public TimeSeries DailyReturns(int i, DateTime start, DateTime end) { var r = getReader(i); TimeSeries ts = new TimeSeries(getTitle(i)); double lastVal = double.NaN; foreach (var p in r.readData(0, 6, start, end)) { double y = p.Y / lastVal - 1; if (lastVal == double.NaN) y = 0; ts.Add(p.X, y); lastVal = p.Y; } return ts; }
public void GetOpenCloseHighLow(string symbl, DateTime start, DateTime end, out TimeSeries open, out TimeSeries close, out TimeSeries high, out TimeSeries low) { var a = new Quote(symbl); XDocument doc = null; if (Properties.Settings.Default.PollWebAPI) { doc = a.Fetch(start.Date, end); if (doc == null) { throw new Exception(); } } open = new TimeSeries(symbl); close = new TimeSeries(symbl); high = new TimeSeries(symbl); low = new TimeSeries(symbl); if (!Properties.Settings.Default.PollWebAPI) { open = Open(symbl, start, end, 1); high = Open(symbl, start, end, 2); low = Open(symbl, start, end, 3); close = Open(symbl, start, end, 4); return; } foreach (var quote in doc.Descendants("quote")) { open.Add(DateTimeAxis.ToDouble(DateTime.Parse(quote.Element("Date").Value)), double.Parse(quote.Element("Open").Value)); close.Add(DateTimeAxis.ToDouble(DateTime.Parse(quote.Element("Date").Value)), double.Parse(quote.Element("Close").Value)); high.Add(DateTimeAxis.ToDouble(DateTime.Parse(quote.Element("Date").Value)), double.Parse(quote.Element("High").Value)); low.Add(DateTimeAxis.ToDouble(DateTime.Parse(quote.Element("Date").Value)), double.Parse(quote.Element("Low").Value)); } }
public TimeSeries Open2(string symbl, DataType type, DateTime start, DateTime end) { var a = new Quote(symbl); XDocument doc = null; if (Properties.Settings.Default.PollWebAPI) { doc = a.Fetch(start.Date, end); if (doc == null) { throw new Exception(); } } TimeSeries ts = new TimeSeries(symbl); if (type == DataType.AdjClose) { if (!Properties.Settings.Default.PollWebAPI) { return Open(symbl, start, end, 6); } foreach (var quote in doc.Descendants("quote")) { ts.Add(DateTimeAxis.ToDouble(DateTime.Parse(quote.Element("Date").Value)), double.Parse(quote.Element("Adj_Close").Value)); } } if (type == DataType.Volume) { if (!Properties.Settings.Default.PollWebAPI) { return Open(symbl, start, end, 5); } foreach (var quote in doc.Descendants("quote")) { ts.Add(DateTimeAxis.ToDouble(DateTime.Parse(quote.Element("Date").Value)), double.Parse(quote.Element("Volume").Value)); } } if (type == DataType.Close) { if (!Properties.Settings.Default.PollWebAPI) { return Open(symbl, start, end, 4); } foreach (var quote in doc.Descendants("quote")) { ts.Add(DateTimeAxis.ToDouble(DateTime.Parse(quote.Element("Date").Value)), double.Parse(quote.Element("Close").Value)); } } if (type == DataType.Open) { if (!Properties.Settings.Default.PollWebAPI) { return Open(symbl, start, end, 1); } foreach (var quote in doc.Descendants("quote")) { ts.Add(DateTimeAxis.ToDouble(DateTime.Parse(quote.Element("Date").Value)), double.Parse(quote.Element("Open").Value)); } } if (type == DataType.High) { if (!Properties.Settings.Default.PollWebAPI) { return Open(symbl, start, end, 2); } foreach (var quote in doc.Descendants("quote")) { ts.Add(DateTimeAxis.ToDouble(DateTime.Parse(quote.Element("Date").Value)), double.Parse(quote.Element("High").Value)); } } if (type == DataType.Low) { foreach (var quote in doc.Descendants("quote")) { ts.Add(DateTimeAxis.ToDouble(DateTime.Parse(quote.Element("Date").Value)), double.Parse(quote.Element("Low").Value)); } } return ts; }
public TimeSeries Open(int i, DateTime start, DateTime end, int fieldIdx = 6) { TimeSeries ts = new TimeSeries(getTitle(i)); var r = getReader(i); try { foreach (var p in r.readData(0, fieldIdx, start, end)) { ts.Add(p.X, p.Y); } } catch{ } return ts; }
public TimeSeries Open(string symbol, DateTime start, DateTime end, int fieldIdx = 6) { TimeSeries ts = new TimeSeries(symbol); var r = getReader(symbol); try { foreach (var p in r.readData(0, fieldIdx, start, end)) { ts.Add(p.X, p.Y); } } catch { } return ts; }
public TimeSeries GetDiffs() { double lastVal = double.NaN; TimeSeries ts = new TimeSeries(this.Name); ///Notice that this for loop iterates forward in time for (int i = domain.Count() - 1; i >= 0; i--) { double y = range[i] / lastVal - 1; if (double.IsNaN(lastVal)) y = 0; ts.Add(domain[i], y); lastVal = range[i]; } return ts; }