public static async Task <CompaniesListFMP> GetScreenedCompaniesAsync(CompaniesListFMP allCompanies, string screenId) { CompaniesListFMP screened = new CompaniesListFMP { SymbolsToCompanies = new Dictionary <string, CompanyFMP>() }; foreach (var company in allCompanies.SymbolsToCompanies) { string symbol = company.Key; CompanyFMP companyObject = company.Value; CompanyStatsFMP stats = companyObject.Stats; if (stats.PriceAverageToday < 20 && stats.PriceAverageToday > .01M && stats.VolumeAverageUSD > 1000000 /*&& !String.IsNullOrEmpty(stats.Earnings.EPSReportDate)*/) { screened.SymbolsToCompanies.Add(symbol, companyObject); } } return(await Task.FromResult(screened)); }
public static async Task <CompaniesListFMP> GetAllCompaniesAsync() { CompaniesListFMP companies = new CompaniesListFMP() { SymbolsToCompanies = new Dictionary <string, CompanyFMP>() }; string nasdaqData = Companies.GetFromFtpUri(Companies.NasdaqSymbolsUri); string[] nasdaqDataLines = nasdaqData.Split(new[] { Environment.NewLine }, StringSplitOptions.None); for (int i = 1; i < nasdaqDataLines.Length - 1; i++) //trim first and last row { string line = nasdaqDataLines[i]; string[] data = line.Split('|'); if (data.Count() > 3) { string symbol = data[1]; if (!companies.SymbolsToCompanies.ContainsKey(symbol) && !String.IsNullOrEmpty(symbol)) { bool isNasdaq = data[0] == "Y"; if (isNasdaq) { CompanyStatsFMP stats = FMP.GetCompanyStatsAsync(symbol).Result; CompanyFMP company = new CompanyFMP { Symbol = symbol, Exchange = "NASDAQ", Stats = stats }; companies.SymbolsToCompanies.Add(symbol, company); } } } } string otcData = Companies.GetFromFtpUri(Companies.OtcSymbolsUri); string[] otcDataLines = otcData.Split(new[] { Environment.NewLine }, StringSplitOptions.None); for (int j = 1; j < otcDataLines.Length - 1; j++) //trim first and last row { string line = otcDataLines[j]; string[] data = line.Split('|'); if (data.Count() > 3) { string symbol = data[0]; if (!companies.SymbolsToCompanies.ContainsKey(symbol) && !String.IsNullOrEmpty(symbol)) { CompanyStatsFMP stats = FMP.GetCompanyStatsAsync(symbol).Result; CompanyFMP company = new CompanyFMP { Symbol = symbol, Exchange = "OTC", Stats = stats }; companies.SymbolsToCompanies.Add(symbol, company); } } } string otcMarketsData = Companies.GetFromUri(Companies.OtcMarketsUri); string[] otcMarketsDataLines = otcMarketsData.Split(new[] { Environment.NewLine }, StringSplitOptions.None); for (int k = 1; k < otcMarketsDataLines.Length; k++) //trim first row { string line = otcMarketsDataLines[k]; string[] data = line.Split(','); if (data.Count() > 3) { string symbol = data[0]; if (!companies.SymbolsToCompanies.ContainsKey(symbol) && !String.IsNullOrEmpty(symbol)) { CompanyStatsFMP stats = FMP.GetCompanyStatsAsync(symbol).Result; CompanyFMP company = new CompanyFMP { Symbol = symbol, Exchange = data[2], Stats = stats }; companies.SymbolsToCompanies.Add(symbol, company); } } } return(await Task.FromResult(companies)); }