public IEnumerable <SymbolModel> GetAllSymbols(MarketModel market, SettingService settings) { var list = new List <SymbolModel>(); list.AddRange(_majors.Select(m => new SymbolModel(m) { Properties = new Dictionary <string, object> { { "Category", "Majors" } } })); list.AddRange(_crosses.Select(m => new SymbolModel(m) { Properties = new Dictionary <string, object> { { "Category", "Crosses" } } })); list.AddRange(_metals.Select(m => new SymbolModel(m) { Properties = new Dictionary <string, object> { { "Category", "Metals" } } })); list.AddRange(_indices.Select(m => new SymbolModel(m) { Properties = new Dictionary <string, object> { { "Category", "Indices" } } })); var downloader = new DukascopyDataDownloader(); return(list.Where(m => downloader.HasSymbol(m.Name))); }
private void UpdateSymbols(MarketModel market) { var all = new List <SymbolModel>(); all.AddRange(_majors.Select(m => new SymbolModel(m, market.Market, SecurityType.Forex) { Active = false, Properties = new Dictionary <string, object> { { "Category", "Majors" } } })); all.AddRange(_crosses.Select(m => new SymbolModel(m, market.Market, SecurityType.Forex) { Active = false, Properties = new Dictionary <string, object> { { "Category", "Crosses" } } })); all.AddRange(_metals.Select(m => new SymbolModel(m, market.Market, SecurityType.Cfd) { Active = false, Properties = new Dictionary <string, object> { { "Category", "Metals" } } })); all.AddRange(_indices.Select(m => new SymbolModel(m, market.Market, SecurityType.Cfd) { Active = false, Properties = new Dictionary <string, object> { { "Category", "Indices" } } })); // Exclude unknown symbols var downloader = new DukascopyDataDownloader(); foreach (SymbolModel symbol in all.Where(m => downloader.HasSymbol(m.Name))) { SymbolModel item = market.Symbols.FirstOrDefault(m => m.Name.Equals(symbol.Name)); if (item == null) { // Add symbol market.Symbols.Add(symbol); } else { // Update properties item.Properties = symbol.Properties; } } }