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;
                }
            }
        }
예제 #2
0
        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;
            }
        }