/// <summary> /// Checks that the factor file exists on disk, and if it does, loads it into memory /// </summary> private IFactorProvider GetFactorFile(Symbol symbol, string permtick) { var path = Path.Combine(Globals.CacheDataFolder, symbol.SecurityType.SecurityTypeToLower(), symbol.ID.Market, "factor_files", permtick.ToLowerInvariant() + ".csv"); var factorFile = PriceScalingExtensions.SafeRead(permtick, _dataProvider.ReadLines(path), symbol.SecurityType); _cache.AddOrUpdate(symbol, factorFile, (s, c) => factorFile); return(factorFile); }
/// <summary> /// Reads the zip bytes as text and parses as FactorFileRows to create FactorFiles /// </summary> public static IEnumerable <KeyValuePair <Symbol, IFactorProvider> > ReadFactorFileZip(Stream file, MapFileResolver mapFileResolver, string market, SecurityType securityType) { if (file == null || file.Length == 0) { return(new Dictionary <Symbol, IFactorProvider>()); } var keyValuePairs = ( from kvp in Compression.Unzip(file) let filename = kvp.Key let lines = kvp.Value let factorFile = PriceScalingExtensions.SafeRead(Path.GetFileNameWithoutExtension(filename), lines, securityType) let mapFile = mapFileResolver.GetByPermtick(factorFile.Permtick) where mapFile != null select new KeyValuePair <Symbol, IFactorProvider>(GetSymbol(mapFile, market, securityType), factorFile) ); return(keyValuePairs); }