private bool UlozData(ObchodnyDen obchodnyDen) { var den = (DateTime.Now - obchodnyDen.Date).Days; return den > 6; }
public List<ObchodnyDen> ParsujKontraktXml(out bool succes, string skratene = null, int kontrakIndex = 0, string kontraktnyMesiac = null, string rok = null) { var list = new List<ObchodnyDen>(); succes = false; string komodita = skratene ?? _listFuturesKontraktov[kontrakIndex - 1].Symbol + kontraktnyMesiac + rok; //string uri = "http://www.quandl.com/api/v1/datasets/OFDP/FUTURE_" + komodita + ".xml?auth_token=UqHLDQVcxZy5AknRTZX9"; string uri = String.Format(_listFuturesKontraktov[kontrakIndex - 1].Url, komodita, string.Empty, string.Empty); try { WebRequest req = WebRequest.Create(uri); req.Proxy = WebRequest.DefaultWebProxy; req.UseDefaultCredentials = true; var resp = req.GetResponse(); var textReader = new StreamReader(resp.GetResponseStream()); var xmlReader = new XmlTextReader(textReader); var doc = new XmlDocument(); doc.Load(xmlReader); int multiplikator = VypocitajMultiplikator(doc.InnerXml); var text = doc.InnerXml.Replace(" type=\"array\"", "").Replace(" type=\"float\"", ""); var index = text.IndexOf("<data>"); text = text.Remove(0, index); index = text.IndexOf("</dataset>"); text = text.Substring(0, index); text = text.Replace(" <datum>", " <den>").Replace(" </datum>", " </den>"); text = text.Replace("<datum></datum>", "<datum>0</datum>"); XDocument xdoc = XDocument.Parse(text); var authors = xdoc.Descendants("datum"); var dlzka = authors.Count() / multiplikator; if (dlzka > 0) { for (int i = 0; i < dlzka; i++) { var dat = authors.ElementAt(i * multiplikator + 1).Value.ToString(); var datum = DateTime.Parse(authors.ElementAt(i * multiplikator + 1).Value.ToString()); //var data = authors.ElementAt(i * multiplikator + 2).Value.ToString(); var open = double.Parse(authors.ElementAt(i * multiplikator + 2).Value.ToString(), CultureInfo.InvariantCulture); var high = double.Parse(authors.ElementAt(i * multiplikator + 3).Value.ToString(), CultureInfo.InvariantCulture); var low = double.Parse(authors.ElementAt(i * multiplikator + 4).Value.ToString(), CultureInfo.InvariantCulture); var close = double.Parse(authors.ElementAt(i * multiplikator + (multiplikator == 10 ? 7 : 5)).Value.ToString(), CultureInfo.InvariantCulture); var volume = double.Parse(authors.ElementAt(i * multiplikator + (multiplikator == 10 ? 8 : 6)).Value.ToString(), CultureInfo.InvariantCulture); var open_interest = double.Parse(authors.ElementAt(i * multiplikator + (multiplikator == 10 ? 9 : 7)).Value.ToString(), CultureInfo.InvariantCulture); var den = new ObchodnyDen(datum,open,high,low,close,volume,open_interest); list.Add(den); } } } catch (Exception e) { Console.WriteLine(e); if (ZmenaPopisu != null) { //vyvolani udalosti StavText = "Chyba pri stahovani "+e.Message; ZmenaPopisu(); } } if (list.Count>0) { succes = true; if (UlozData(list.First())) { PracaSoSubormi.UlozAktualnyList(list, komodita); } else { PracaSoSubormi.UlozDocasnyAktualnyList(list, komodita); } } return list; }