public OutParameter ForeCastNextPrice()
        {
            MovingAverage ma = new EMA();

            try{
                float current = this.LiveMarketPrice();
                float avg     = ma.OneTimeUpdate(current, coinUpdate[parameters.Coin].Predicted, parameters.Period);
                if ((parameters.Strategy.Equals("EMADC")))
                {
                    current = ma.OneTimeUpdate(current, coinUpdate[parameters.Coin].Predicted, parameters.Period_1);
                    coinUpdate[parameters.Coin] = Builder <OutParameter> .CreateNew().With(x => x.Coin = parameters.Coin)
                                                  .With(x => x.Current  = current).With(x => x.Predicted = avg)
                                                  .With(x => x.Decision = this.Decision(avg, current)).Build();
                }
                else
                {
                    coinUpdate[parameters.Coin] = Builder <OutParameter> .CreateNew().With(x => x.Coin = parameters.Coin)
                                                  .With(x => x.Current  = current).With(x => x.Predicted = avg)
                                                  .With(x => x.Decision = this.Decision(current, avg)).Build();
                }
            }
            catch (Exception ex) {
                Console.WriteLine("Exception: " + ex);
            }
            return(coinUpdate[parameters.Coin]);
        }
        public void TestOneTimeUpdate()
        {
            MovingAverage ma = new EMA();

            Assert.Equal(6672.21f, ma.OneTimeUpdate(6672.21f, 1.34f, 1));
        }