public OutParameter InitialForecast()
        {
            HistryData histryData;
            float      avg = 0, crntPrice = 0, initialAvg;

            try{
                if ((histryData = rqstController.GetHistoricalData(parameters.Coin, 2000)) != null)
                {
                    if (parameters.Strategy.Equals("SMA"))
                    {
                        avg       = new SMA().GetAverage(histryData.Data.ConvertAll(data => data.close).GetRange(2000 - parameters.Limit - 2, parameters.Limit));
                        crntPrice = this.LiveMarketPrice();
                    }
                    else if (parameters.Strategy.Equals("EMA"))
                    {
                        MovingAverage ma = new EMA();
                        initialAvg = ma.GetAverage(histryData.Data.ConvertAll(data => data.close).GetRange(0, 100));
                        avg        = ma.PredictedPrice(histryData.Data.ConvertAll(data => data.close).GetRange(100, 1900), initialAvg, parameters.Period);
                        crntPrice  = this.LiveMarketPrice();
                    }
                    else if (parameters.Strategy.Equals("EMADC"))
                    {
                        MovingAverage ma = new EMA();
                        initialAvg = ma.GetAverage(histryData.Data.ConvertAll(data => data.close).GetRange(0, 100));
                        avg        = ma.PredictedPrice(histryData.Data.ConvertAll(data => data.close).GetRange(100, 1900), initialAvg, parameters.Period_1);
                        crntPrice  = ma.PredictedPrice(histryData.Data.ConvertAll(data => data.close).GetRange(100, 1900), initialAvg, parameters.Period);
                    }
                    coinUpdate[parameters.Coin] = Builder <OutParameter> .CreateNew().With(x => x.Coin = parameters.Coin)
                                                  .With(x => x.Current  = crntPrice).With(x => x.Predicted = avg)
                                                  .With(x => x.Decision = this.Decision(crntPrice, avg)).Build();

                    return(coinUpdate[parameters.Coin]);
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("Exiting App...");
                }
            }
            catch (Exception ex) {
                Console.WriteLine("Exception: " + ex);
            }
            return(null);
        }