internal void UpdateEstimatedProfit(Dictionary <AlgorithmType, double> profits) { _updateEstimatedProfitCalled = true; if (profits == null) { return; } var containedIDs = profits.Keys.Where(key => IDs.Contains(key)).ToArray(); EstimatedProfitAllSMAPresent = IDs.Length == containedIDs.Length; EstimatedProfitAllSMAPositiveOrZero = EstimatedProfitAllSMAPresent && IDs.All(id => profits[id] >= 0); // clear old values _lastEstimatedProfitSMA.Clear(); foreach (var id in containedIDs) { _lastEstimatedProfitSMA[id] = profits[id]; } // notify changed OnPropertyChanged(nameof(CurrentEstimatedProfit)); OnPropertyChanged(nameof(CurrentEstimatedProfitStr)); OnPropertyChanged(nameof(Status)); }