/// <summary> /// Loads default market information from market.xml /// </summary> /// <remarks></remarks> public static void FillCountriesWithIndices() { XParseDocument xmlDoc = MyHelper.ParseXmlDocument(Properties.Resources.market); XParseElement[] countryNodes = XPath.GetElements("//Resources/Countries/Country", xmlDoc); foreach (XParseElement countryNode in countryNodes) { CountryInfo ctr = null; string ctrIDStr = MyHelper.GetXmlAttributeValue(countryNode, "ID"); foreach (CountryInfo defaultCtr in DefaultCountries) { if (defaultCtr.ID.ToString() == ctrIDStr) { ctr = defaultCtr; break; } } if (ctr != null) { ctr.Indices.Clear(); XParseElement indicesNode = XPath.GetElement("Indices", countryNode); foreach (XParseElement indexNode in indicesNode.Elements()) { if (indexNode.Name.LocalName == "Index") { string name = MyHelper.GetXmlAttributeValue(indexNode, "Name"); string id = MyHelper.GetXmlAttributeValue(indexNode, "ID"); string seStr = MyHelper.GetXmlAttributeValue(indexNode, "StockExchange"); StockExchange se = null; foreach (StockExchange defaultExc in mStockExchanges) { if (defaultExc.ID == seStr) { se = defaultExc; break; } } ctr.Indices.Add(new YIndexID(id) { Name = name, StockExchange = se }); } } } } }
internal StockExchange(StockExchange se) { if (se == null) { throw new ArgumentNullException("se", "Original StockExchange is null."); } else { if (se != null) { mID = se.ID; mCountry = se.Country; mSuffix = se.Suffix; mName = se.Name; TradingTimeInfo tt = se.TradingTime; mTradingTime = new TradingTimeInfo(tt.DelayMinutes, tt.TradingDays, tt.Holidays, tt.LocalOpeningTime, tt.TradingSpan, tt.UtcOffsetStandardTime, tt.DaylightSavingTimes); } } }
/// <summary> /// Loads a list of default stock exchanges from market.xml /// </summary> /// <returns></returns> /// <remarks></remarks> public static StockExchange[] GetDefaultStockExchanges() { List <StockExchange> lst = new List <StockExchange>(); XParseDocument xmlDoc = MyHelper.ParseXmlDocument(Properties.Resources.market); XParseElement[] exchanges = XPath.GetElements("//Resources/StockExchanges/StockExchange", xmlDoc); foreach (XParseElement exchangeNode in exchanges) { string seID = MyHelper.GetXmlAttributeValue(exchangeNode, "ID"); string seSuffix = MyHelper.GetXmlAttributeValue(exchangeNode, "Suffix"); string seName = MyHelper.GetXmlAttributeValue(exchangeNode, "Name"); CountryInfo seCountry = null; string ctrID = MyHelper.GetXmlAttributeValue(exchangeNode, "Country"); foreach (CountryInfo ctr in DefaultCountries) { if (ctr.ID.ToString() == ctrID) { seCountry = ctr; break; } } //TradingTimeInfo int seDelayMinutes = Convert.ToInt32(MyHelper.GetXmlAttributeValue(exchangeNode, "DelayMinutes")); int seRelativeToUTC = Convert.ToInt32(MyHelper.GetXmlAttributeValue(exchangeNode, "UtcOffsetStandardTime")); DateTime seOpeningTimeLocal = Convert.ToDateTime(MyHelper.GetXmlAttributeValue(exchangeNode, "OpeningTimeLocal")); DateTime seClosingTimeLocal = Convert.ToDateTime(MyHelper.GetXmlAttributeValue(exchangeNode, "ClosingTimeLocal")); TimeSpan seTradingSpan = seClosingTimeLocal - seOpeningTimeLocal; List <DayOfWeek> seTradingDaysList = new List <DayOfWeek>(); string trdDays = MyHelper.GetXmlAttributeValue(exchangeNode, "TradingDays"); foreach (string day in trdDays.Split(',')) { switch (day) { case "Mo": seTradingDaysList.Add(DayOfWeek.Monday); break; case "Tu": seTradingDaysList.Add(DayOfWeek.Tuesday); break; case "We": seTradingDaysList.Add(DayOfWeek.Wednesday); break; case "Th": seTradingDaysList.Add(DayOfWeek.Thursday); break; case "Fr": seTradingDaysList.Add(DayOfWeek.Friday); break; case "Sa": seTradingDaysList.Add(DayOfWeek.Saturday); break; case "Su": seTradingDaysList.Add(DayOfWeek.Sunday); break; } } DaylightSavingTime[] seDaylightSavingTimes = null; if (seCountry != null) { seDaylightSavingTimes = seCountry.DaylightSavingTimes; } TradingTimeInfo seTradingTimeInfo = new TradingTimeInfo(seDelayMinutes, seTradingDaysList.ToArray(), null, seOpeningTimeLocal, seTradingSpan, seRelativeToUTC, seDaylightSavingTimes); StockExchange se = new StockExchange(seID, seSuffix, seName, seCountry, seTradingTimeInfo); string s = MyHelper.GetXmlAttributeValue(exchangeNode, "Tags"); if (s != string.Empty) { se.Tags.AddRange(s.Split(',')); } lst.Add(se); } return(lst.ToArray()); }