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); }
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); }
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); }
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(); } }