public void CalculateProfits(Dictionary <AlgorithmType, double> profits) { // save last state PrevProfitableAlgorithmStringID = MostProfitableAlgorithmStringID; // assume none is profitable MostProfitableAlgorithmStringID = "NONE"; // calculate new profits foreach (var algo in Algorithms) { algo.UpdateCurrentNormalizedProfit(profits); } // find max paying value and save key double maxProfit = double.NegativeInfinity; var validAlgorithms = Algorithms.Where(algo => algo.IgnoreUntil <= DateTime.UtcNow); if (validAlgorithms.Count() == 0) { AvailableNotifications.CreateNoAvailableAlgorithmsInfo(); } foreach (var algo in validAlgorithms) { if (maxProfit < algo.CurrentNormalizedProfit) { maxProfit = algo.CurrentNormalizedProfit; MostProfitableAlgorithmStringID = algo.AlgorithmStringID; } } }
public void CalculateProfits(Dictionary <AlgorithmType, double> profits) { // save last state PrevProfitableAlgorithmStringID = MostProfitableAlgorithmStringID; // calculate new profits foreach (var algo in Algorithms) { algo.UpdateCurrentNormalizedProfit(profits); } // find max paying value and save key var mostProfitable = Algorithms.Where(algo => algo.IgnoreUntil <= DateTime.UtcNow) .OrderByDescending(algo => algo.CurrentNormalizedProfit) .FirstOrDefault(); if (Device.IsGaming == true) { MostProfitableAlgorithmStringID = "NONE"; } else if (mostProfitable == null) { AvailableNotifications.CreateNoAvailableAlgorithmsInfo(Device.ID, Device.Name); MostProfitableAlgorithmStringID = "NONE"; } else { MostProfitableAlgorithmStringID = mostProfitable.AlgorithmStringID; } }