コード例 #1
0
ファイル: Jadro.cs プロジェクト: Carpkiller/SpreadCalculator
 private bool UlozData(ObchodnyDen obchodnyDen)
 {
     var den = (DateTime.Now - obchodnyDen.Date).Days;
     return den > 6;
 }
コード例 #2
0
ファイル: Jadro.cs プロジェクト: Carpkiller/SpreadCalculator
        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;
        }