Esempio n. 1
0
        /// <summary>
        /// Helper method to deserialize a single json Tiingo news
        /// </summary>
        /// <param name="token">The json token containing the Tiingo news to deserialize</param>
        /// <returns>The deserialized <see cref="TiingoNewsData"/> instance</returns>
        public static TiingoNewsData DeserializeNews(JToken token)
        {
            // just in case we add some default values for these
            var title       = token["title"]?.ToString() ?? "";
            var source      = token["source"]?.ToString() ?? "";
            var url         = token["url"]?.ToString() ?? "";
            var tags        = token["tags"]?.ToObject <List <string> >() ?? new List <string>();
            var description = token["description"]?.ToString() ?? "";

            var publishedDate = GetDateTime(token["publishedDate"]);
            var crawlDate     = GetDateTime(token["crawlDate"]);
            var articleID     = token["id"].ToString();
            var tickers       = token["tickers"];

            var symbols = new List <Symbol>();

            foreach (var tiingoTicker in tickers)
            {
                var ticker = TiingoSymbolMapper.GetLeanTicker(tiingoTicker.ToString());

                var sid = SecurityIdentifier.GenerateEquity(
                    ticker,
                    // for now we suppose USA market
                    QuantConnect.Market.USA,
                    // we use the news date to resolve the map file to use
                    mappingResolveDate: publishedDate);
                symbols.Add(new Symbol(sid, ticker));
            }

            var dataPoint = new TiingoNewsData
            {
                ArticleID     = articleID,
                CrawlDate     = crawlDate,
                Description   = description,
                PublishedDate = publishedDate,
                Time          = publishedDate,
                Source        = source,
                Tags          = tags,
                Symbols       = symbols,
                Url           = url,
                Title         = title
            };

            return(dataPoint);
        }
Esempio n. 2
0
 private void SetSymbolAndTime(TiingoNewsData dataPoint)
 {
     if (_symbol != null)
     {
         dataPoint.Symbol = _symbol;
         if (_liveMode)
         {
             // for live use crawl date
             dataPoint.Time = dataPoint.CrawlDate;
         }
         else
         {
             // for backtesting use published time
             // old data (eg 2014) can have newer crawl date (eg 2019)
             dataPoint.Time = dataPoint.PublishedDate;
         }
     }
 }