Пример #1
0
        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)));
        }
Пример #2
0
        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;
                }
            }
        }