/// <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);
        }
Exemple #2
0
        /// <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);
        }