예제 #1
0
 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;
 }
예제 #2
0
        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));
            }
        }
예제 #3
0
        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;
        }
예제 #4
0
        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;
        }
예제 #5
0
        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;
        }
예제 #6
0
 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;
 }