/// <summary>
        /// Adaptive Moving Average
        /// </summary>
        /// <param name="FastLimit">defualt = 0.5</param>
        /// <param name="SlowLimit">defualt=0.05</param>
        /// <param name="Var"></param>
        /// <returns></returns>
        public static List <MAMA> createAdaptiveMA_MAMA(double FastLimit, double SlowLimit, List <Price> Price)
        {
            List <MAMA> mama = new List <MAMA>();

            double[] _price = new double[Price.Count];

            for (int x = 0; x < Price.Count; x++)
            {
                _price[x] = Price[x].Close;
            }

            double[] _mama = new double[Price.Count];
            double[] _fama = new double[Price.Count];
            int      a, b;

            Core.Mama(0, Price.Count - 1, _price, FastLimit, SlowLimit, out a, out b, _mama, _fama);

            for (int x = 0; x < Price.Count - a; x++)
            {
                MAMA e = new MAMA
                {
                    TimeStamp   = Price[x + a].TimeStamp,
                    Price_Close = Price[x + a].Close,
                    Price_High  = Price[x + a].High,
                    Price_Low   = Price[x + a].Low,
                    Price_Open  = Price[x + a].Open,
                    Mama        = _mama[x],
                    Fama        = _fama[x],
                };
                mama.Add(e);
            }

            return(mama);
        }
        /// <summary>
        /// Adaptive Moving Average
        /// </summary>
        /// <param name="FastLimit">MAMA defualt = 0.05</param>
        /// <param name="SlowLimit">FAMA(Following Adaptive Moving Average) defualt=0.5</param>
        /// <param name="Var"></param>
        /// <returns></returns>
        public static List <MAMA> createAdaptiveMA_MAMA(double FastLimit, double SlowLimit, List <VariableIndicator> Var)
        {
            List <MAMA> mama = new List <MAMA>();

            double[] _price = new double[Var.Count];

            for (int x = 0; x < Var.Count; x++)
            {
                _price[x] = Var[x].Value;
            }

            double[] _mama = new double[Var.Count];
            double[] _fama = new double[Var.Count];
            int      a, b;

            Core.Mama(0, Var.Count - 1, _price, FastLimit, SlowLimit, out a, out b, _mama, _fama);

            for (int x = 0; x < Var.Count - a; x++)
            {
                MAMA e = new MAMA
                {
                    TimeStamp   = Var[x + a].TimeStamp,
                    Price_Close = Var[x + a].Price_Close,
                    Price_High  = Var[x + a].Price_High,
                    Price_Low   = Var[x + a].Price_Low,
                    Price_Open  = Var[x + a].Price_Open,
                    Mama        = _mama[x],
                    Fama        = _fama[x],
                };
                mama.Add(e);
            }

            return(mama);
        }
		/// <summary>
		/// Adaptive Moving Average
		/// </summary>
		/// <param name="FastLimit">defualt = 0.5</param>
		/// <param name="SlowLimit">defualt=0.05</param>
		/// <param name="Var"></param>
		/// <returns></returns>
		public static List<MAMA> createAdaptiveMA_MAMA(double FastLimit, double SlowLimit, List<Price> Price)
		{
			List<MAMA> mama = new List<MAMA>();

			double[] _price = new double[Price.Count];

			for (int x = 0; x < Price.Count; x++) _price[x] = Price[x].Close;

			double[] _mama = new double[Price.Count];
			double[] _fama = new double[Price.Count];
			int a, b;

			Core.Mama(0, Price.Count - 1, _price, FastLimit, SlowLimit, out a, out b, _mama, _fama);

			for (int x = 0; x < Price.Count - a; x++)
			{
				MAMA e = new MAMA
				{
					TimeStamp = Price[x + a].TimeStamp,
					Price_Close = Price[x + a].Close,
					Price_High = Price[x + a].High,
					Price_Low = Price[x + a].Low,
					Price_Open = Price[x + a].Open,
					Mama = _mama[x],
					Fama = _fama[x],

				};
				mama.Add(e);
			}

			return mama;
		}
		/// <summary>
		/// Adaptive Moving Average
		/// </summary>
		/// <param name="FastLimit">MAMA defualt = 0.05</param>
		/// <param name="SlowLimit">FAMA(Following Adaptive Moving Average) defualt=0.5</param>
		/// <param name="Var"></param>
		/// <returns></returns>
		public static List<MAMA> createAdaptiveMA_MAMA(double FastLimit, double SlowLimit, List<VariableIndicator> Var)
		{
			List<MAMA> mama = new List<MAMA>();

			double[] _price = new double[Var.Count];

			for (int x = 0; x < Var.Count; x++) _price[x] = Var[x].Value;

			double[] _mama = new double[Var.Count];
			double[] _fama = new double[Var.Count];
			int a, b;

			Core.Mama(0, Var.Count - 1, _price, FastLimit, SlowLimit, out a, out b, _mama, _fama);

			for (int x = 0; x < Var.Count - a; x++)
			{
				MAMA e = new MAMA
				{
					TimeStamp = Var[x + a].TimeStamp,
					Price_Close = Var[x + a].Price_Close,
					Price_High = Var[x + a].Price_High,
					Price_Low = Var[x + a].Price_Low,
					Price_Open = Var[x + a].Price_Open,
					Mama = _mama[x],
					Fama = _fama[x],

				};
				mama.Add(e);
			}

			return mama;
		}