/// <summary> /// Tries to read a list of quote options from a CSV formatted text /// </summary> /// <param name="csvText">The CSV formatted text</param> /// <param name="delimiter">The delimiter of the CSV text</param> /// <param name="culture">The used culture for formating dates and numbers. If parameter value is null/Nothing, default Culture will be used.</param> /// <returns>The converted quote values or Nothing</returns> /// <remarks></remarks> public static QuoteOptionsData[] ToQuoteOptions(string csvText, char delimiter, System.Globalization.CultureInfo culture = null) { List<QuoteOptionsData> lst = new List<QuoteOptionsData>(); if (csvText != string.Empty) { System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CurrentCulture; if (culture != null) ci = culture; string[][] table = MyHelper.CsvTextToStringTable(csvText, delimiter); if (table.Length > 1) { for (int i = 0; i <= table.Length - 1; i++) { if (table[i].Length == 10) { QuoteOptionsData qd = new QuoteOptionsData(); qd.Symbol = table[i][0]; qd.Type = (QuoteOptionType)(table[i][1].ToLower() == "p" ? QuoteOptionType.Put : QuoteOptionType.Call); double t1; double t2; double t3; double t4; double t5; int t6; int t7; if (double.TryParse(table[i][2], System.Globalization.NumberStyles.Currency, ci, out t1) && double.TryParse(table[i][3], System.Globalization.NumberStyles.Currency, ci, out t2) && double.TryParse(table[i][4], System.Globalization.NumberStyles.Currency, ci, out t3) && double.TryParse(table[i][6], System.Globalization.NumberStyles.Currency, ci, out t4) && double.TryParse(table[i][7], System.Globalization.NumberStyles.Currency, ci, out t5) && int.TryParse(table[i][8], System.Globalization.NumberStyles.Integer, ci, out t6) && int.TryParse(table[i][9], System.Globalization.NumberStyles.Integer, ci, out t7)) { qd.LastPrice = t1; qd.StrikePrice = t2; qd.Change = t3; qd.Bid = t4; qd.Ask = t5; qd.Volume = t6; qd.OpenInterest = t7; qd.Change *= Convert.ToInt32((table[i][5].ToLower() == "down" ? -1 : 1)); lst.Add(qd); } } } } } return lst.ToArray(); }
/// <summary> /// Writes a QuoteOption to XML format /// </summary> /// <param name="writer">The used XML writer</param> /// <param name="quoteOption">The used QuoteOption</param> /// <param name="culture">The used culture for formating dates and numbers. If parameter value is null/Nothing, default Culture will be used.</param> /// <remarks></remarks> public static void FromQuoteOption(System.Xml.XmlWriter writer, QuoteOptionsData quoteOption, System.Globalization.CultureInfo culture = null) { System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CurrentCulture; if (culture != null) ci = culture; writer.WriteStartElement("Option"); writer.WriteAttributeString(FinanceHelper.NameOptionSymbol, quoteOption.Symbol); writer.WriteAttributeString(FinanceHelper.NameOptionType, (quoteOption.Type == QuoteOptionType.Call ? "C" : "P").ToString()); writer.WriteStartElement(FinanceHelper.NameOptionLastPrice); writer.WriteValue(MyHelper.ObjectToString(quoteOption.LastPrice, ci)); writer.WriteEndElement(); writer.WriteStartElement(FinanceHelper.NameOptionStrikePrice); writer.WriteValue(MyHelper.ObjectToString(quoteOption.StrikePrice, ci)); writer.WriteEndElement(); writer.WriteStartElement(FinanceHelper.NameOptionChange); writer.WriteValue(MyHelper.ObjectToString(Math.Abs(quoteOption.Change), ci)); writer.WriteEndElement(); writer.WriteStartElement(FinanceHelper.NameOptionChangeDir); writer.WriteValue((quoteOption.Change >= 0 ? "Up" : "Down").ToString()); writer.WriteEndElement(); writer.WriteStartElement(FinanceHelper.NameOptionBid); writer.WriteValue(MyHelper.ObjectToString(quoteOption.Bid, ci)); writer.WriteEndElement(); writer.WriteStartElement(FinanceHelper.NameOptionAsk); writer.WriteValue(MyHelper.ObjectToString(quoteOption.Ask, ci)); writer.WriteEndElement(); writer.WriteStartElement(FinanceHelper.NameOptionVolume); writer.WriteValue(MyHelper.ObjectToString(quoteOption.Volume, ci)); writer.WriteEndElement(); writer.WriteStartElement(FinanceHelper.NameOptionOpenInterest); writer.WriteValue(MyHelper.ObjectToString(quoteOption.OpenInterest, ci)); writer.WriteEndElement(); writer.WriteEndElement(); }