Esempio n. 1
0
        public QuandlError GetCandlesDic(string fstr, string end_date, out Dictionary <string, double[]> dic, int n = int.MinValue)
        {
            QuandlError       err    = default(QuandlError);
            QuandlDataWrapper result = default(QuandlDataWrapper);
            string            req_url;
            int ccnt = 0, rcnt = 0;

            dic = new Dictionary <string, double[]>();

            if (n != int.MinValue)
            {
                n = Math.Max(n, _MAX_JSON); fstr += "&rows=" + n;
            }
            else
            {
                n = int.MaxValue;
            }

            req_url = string.Format(fstr, end_date);

            do
            {
                try
                {
                    result = (QuandlDataWrapper)WnFElliottBrowser.GetJSONObjects(req_url, typeof(QuandlDataWrapper));
                }
                catch (WebException ex)
                {
                    int status = (int)((HttpWebResponse)ex.Response).StatusCode;
                    err = GetQuandlError(ex);
                    Console.WriteLine("Exception at QuandlAPI.GetCandlesDic() GetJSONObjects returned {0} after {1} candles.", status, dic.Count);
                    if (dic.Count > 0)
                    {
                        dic.Clear();
                    }
                    break;
                }

                rcnt += 1;
                ccnt  = result.dataset_data.data.Length;
                foreach (TimeSeries l in result.dataset_data.data)
                {
                    end_date      = l.Date;
                    dic[end_date] = l.Values;
                }

                req_url = string.Format(fstr, end_date);
            } while (ccnt >= n);

            result = null;
            return(err);
        }
Esempio n. 2
0
        public static QuandlError GetQuandlError(WebException ex)
        {
            QuandlException e   = default(QuandlException);
            QuandlError     er  = default(QuandlError);
            string          txt = null;

            using (Stream s = ex.Response.GetResponseStream())
            {
                using (StreamReader r = new StreamReader(s))
                {
                    txt = r.ReadToEnd();
                }
            }

            e = (QuandlException)JsonConvert.DeserializeObject(txt, typeof(QuandlException));
            if (e != null)
            {
                er = e.quandl_error;
            }
            return(er);
        }
Esempio n. 3
0
        public QuandlError GetCandlesTable(string fstr, string end_date, out DataTable dic, string tname = "")
        {
            QuandlError       err = default(QuandlError);
            QuandlDataWrapper result = default(QuandlDataWrapper);
            DataRow           r = default(DataRow);
            string            req_url = string.Format(fstr, end_date);
            int ccnt = 0, rcnt = 0;

            dic = _candles_table(tname);

            try
            {
                result = (QuandlDataWrapper)WnFElliottBrowser.GetJSONObjects(req_url, typeof(QuandlDataWrapper));
            }
            catch (WebException ex)
            {
                int status = (int)((HttpWebResponse)ex.Response).StatusCode;
                err = GetQuandlError(ex);
                Console.WriteLine("Exception at QuandlAPI.GetCandlesTable() GetJSONObjects returned {0}", status);
            }

            rcnt += 1;
            ccnt  = result.dataset_data.data.Length;
            for (int i = result.dataset_data.data.Length - 1; i >= 0; i--)
            {
                TimeSeries v = result.dataset_data.data[i];
                r             = dic.NewRow();
                r["DateTime"] = v.Date.Replace("-", "/");
                r["Open"]     = v.Values[0];
                r["High"]     = v.Values[1];
                r["Low"]      = v.Values[2];
                r["Close"]    = v.Values[3];
                r["Volume"]   = v.Values[4];
                dic.Rows.Add(r);
            }

            result = null;
            return(err);
        }
Esempio n. 4
0
        private void _refresh_symbols(string symbols_fstr, string database, ref Dictionary <string, string> dic, ref int err)
        {
            string          url, path;
            HttpWebResponse response = default(HttpWebResponse);

            url = string.Format(symbols_fstr, database);

            var webRequest = (HttpWebRequest)WebRequest.Create(url);

            try
            {
                response = webRequest.GetResponse() as HttpWebResponse;

                if (response.ContentType == "application/zip")
                {
                    bool to_serialize = true, overwrite = false;
                    path = _home + Path.DirectorySeparatorChar + database; if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    path += Path.DirectorySeparatorChar + response.ResponseUri.AbsolutePath.Substring(1);
                    Properties.Settings.Default.symbolsPath = path; Properties.Settings.Default.Save();

                    using (var mstr = new MemoryStream())
                        using (var str = response.GetResponseStream())
                        {
                            str.CopyTo(mstr);
                            ZipArchive zipArchive = new ZipArchive(mstr, ZipArchiveMode.Read);

                            if (File.Exists(path))
                            {
                                using (Stream input = File.OpenRead(path))
                                {
                                    var serialized = new ZipArchive(input, ZipArchiveMode.Read);
                                    using (var md5 = MD5.Create())
                                    {
                                        var h1 = System.Text.Encoding.UTF8.GetString(md5.ComputeHash(zipArchive.Entries[0].Open()));
                                        var h2 = System.Text.Encoding.UTF8.GetString(md5.ComputeHash(serialized.Entries[0].Open()));
                                        to_serialize = overwrite = (h1 != h2);
                                    }
                                }
                            }

                            if (to_serialize)
                            {
                                mstr.Position = 0;
                                using (Stream output = File.OpenWrite(path))
                                    mstr.CopyTo(output);

                                if (overwrite)
                                {
                                    if (SymbolsUpdate != null)
                                    {
                                        SymbolsUpdate();
                                    }
                                    err = 0; goto step1;
                                }
                            }

                            dic = _zipped_CSV_to_dic(zipArchive);
                        }
step1:
                    err = 0;
                }
                else
                {
                    err = (int)APIError.Unknown;
                }
            }
            catch (WebException ex)
            {
                QuandlError qerror = GetQuandlError(ex);
                err = qerror.ToInt();
            }
        }