예제 #1
0
        /// <summary>
        /// ImportContracts
        /// </summary>
        /// <param name="p"></param>
        private async Task CommandImportContractsAsync(object p)
        {
            if (String.IsNullOrWhiteSpace(ExchangeIbSelected))
            {
                LogCurrent.Add($"ERROR! Exchange must be selected.");
                return;
            }

            LogCurrent = LogSymbols;
            LogCurrent.Clear();
            BackgroundLog = Brushes.Gray;
            await Task.Run(() =>
            {
                try
                {
                    string[] companiesArray = null;
                    int delay = 0;
                    Dispatcher.Invoke(() =>
                    {
                        delay              = Convert.ToInt32(Configuration.Instance["DelayMathingSymbols"]);
                        companiesArray     = CompaniesForSymbolResolution.ToArray();
                        CompaniesList      = companiesArray.ToList();
                        SymbolProcessed    = new List <string>();
                        CompaniesProcessed = new List <string>();
                    });

                    foreach (var company in companiesArray)
                    {
                        CurrentCompany = company;
                        IbClient.Instance.LookForSymbols(CurrentCompany);
                        Thread.Sleep(delay);
                    }
                }
                catch (Exception exception)
                {
                    Dispatcher.Invoke(() => { LogCurrent.Add(exception.ToString()); });
                }
            });

            if (ConnectedToIb)
            {
                LogCurrent.Add($"OK! Import completed.");
                DataContext.Instance.SaveChanges();
                LogCurrent.Add("OK! All contracts saved in database.");
                IbClient.Instance.Disonnect();

                UpdateDbState();
                InventoryText = GenerateInventoryText();
                UpdateCompaniesForSymbolResolution(ExchangesFmpSelected);
            }
            else
            {
                LogCurrent.Add($"ERROR! Error while connection to IB server.");
            }
        }
예제 #2
0
        /// <summary>
        /// UpdateCompaniesForSymbolResolution
        /// </summary>
        /// <param name="exchangesFmpSelected"></param>
        private void UpdateCompaniesForSymbolResolution(List <string> exchangesFmpSelected)
        {
            CompaniesForSymbolResolutionText = String.Empty;
            CompaniesForSymbolResolution     = QueryFactory.CompaniesForSymbolResolutionQuery.Run(DbState.CompaniesWoDocumentsIbSymbolNotResolvedNotUnique, exchangesFmpSelected);

            if (CompaniesForSymbolResolution.Any())
            {
                CompaniesForSymbolResolutionText = CompaniesForSymbolResolution.Aggregate((r, n) => r + "\r\n" + n);
            }
            else
            {
                CompaniesForSymbolResolutionText = string.Empty;
            }

            string text = $"Companies for Symbol resolution ({CompaniesForSymbolResolution.Count} selected)\r\nExchanges: {ExchangesFmpSelected.Aggregate((r, n) => r + ", " + n)} ";

            CompaniesForSymbolResolutionHeader = text;
        }