public static List <IBaseNews> Parse(String strNews) { var lst = new List <IBaseNews>(); try { var msgs = strNews.Split(MessagesSeparator, StringSplitOptions.None); if (msgs.Count() == 0) { return(lst); } foreach (var msg in msgs) { if (msg.Contains("N:")) { // встретили новость var item = News.Parse(msg); if (item != null) { lst.Add(item); } } else if (msg.Contains("Q:")) { // встретили котировку var item = new TickerQuoteData(); item.Parse(msg); lst.Add(item); } else { throw new Exception("Неизвестный формат новостей"); } } return(lst); } catch (Exception ex) { // тут он не виден, надо что то придумать Logger.Error("BaseNewsParser.Parse: Возникла ошибка ", ex); } return(lst); }
public static IBaseNews ParseItem(string msg) { IBaseNews news = null; try { if (string.IsNullOrEmpty(msg)) { return(news); } if (msg.Contains("N:")) { // встретили новость news = News.Parse(msg); } else if (msg.Contains("Q:")) { // встретили котировку news = new TickerQuoteData(); try { ((TickerQuoteData)news).Parse(msg); } catch { Logger.ErrorFormat("Котировка не распознана ({0})", msg); news = null; } } else { throw new Exception("Неизвестный формат новости"); } return(news); } catch (Exception ex) { // тут он не виден, надо что то придумать logNoFlood.LogMessageFormatCheckFlood(LogEntryType.Error, LogMsgParseError, 1000 * 60 * 10, "Не удалось разобрать сообщение BaseNews: {0}", msg); } return(news); }
public static List<IBaseNews> Parse(String strNews) { var lst = new List<IBaseNews>(); try { var msgs = strNews.Split(MessagesSeparator, StringSplitOptions.None); if (msgs.Count() == 0) return lst; foreach (var msg in msgs) { if (msg.Contains("N:")) { // встретили новость var item = News.Parse(msg); if (item != null) lst.Add(item); } else if (msg.Contains("Q:")) { // встретили котировку var item = new TickerQuoteData(); item.Parse(msg); lst.Add(item); } else throw new Exception("Неизвестный формат новостей"); } return lst; } catch(Exception ex) { // тут он не виден, надо что то придумать Logger.Error("BaseNewsParser.Parse: Возникла ошибка ", ex); } return lst; }
public static IBaseNews ParseItem(string msg) { IBaseNews news = null; try { if (string.IsNullOrEmpty(msg)) return news; if (msg.Contains("N:")) { // встретили новость news = News.Parse(msg); } else if (msg.Contains("Q:")) { // встретили котировку news = new TickerQuoteData(); try { ((TickerQuoteData) news).Parse(msg); } catch { Logger.ErrorFormat("Котировка не распознана ({0})", msg); news = null; } } else throw new Exception("Неизвестный формат новости"); return news; } catch (Exception ex) { // тут он не виден, надо что то придумать logNoFlood.LogMessageFormatCheckFlood(LogEntryType.Error, LogMsgParseError, 1000 * 60 * 10, "Не удалось разобрать сообщение BaseNews: {0}", msg); } return news; }
public IBaseNews MakeIndex(Dictionary<string, Cortege2<float, DateTime>> lastQuotes, int secondsToStale) { // "слепить" индекс из котировок, посчитать количество // устаревших котировок var timeNow = DateTime.Now; var hasUpdatedValue = false; var index = multiplier; for (var i = 0; i < tickers.Length; i++) { var tickName = tickers[i]; if (!lastQuotes.ContainsKey(tickName)) { loggerNoFlood.LogMessageFormatCheckFlood(LogEntryType.Info, LogMagicNoQuote, 60 * 1000, "MultiplicativeIndex: нет котировки \"{0}\"", tickName); return null; } var tickValue = lastQuotes[tickName]; var price = tickValue.a; if (price == 0) { loggerNoFlood.LogMessageFormatCheckFlood(LogEntryType.Info, LogMagicNoQuote, 60 * 1000, "MultiplicativeIndex: нет котировки \"{0}\"", tickName); return null; } // значение устарело? var deltaSeconds = (timeNow - tickValue.b).TotalSeconds; var isStale = deltaSeconds > secondsToStale; if (!isStale) hasUpdatedValue = true; // домножить индекс index = index*Math.Pow((double) price, (double) powers[i]); } var newsQuote = new TickerQuoteData { Ticker = tickerName, bid = (float)index, ask = (float) index }; return newsQuote; }