コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        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;
        }
コード例 #5
0
ファイル: IndexMaker.cs プロジェクト: johnmensen/TradeSharp
        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;
        }