/// <summary> /// Calculates indicator. /// </summary> /// <param name="price">Price series.</param> /// <returns>Calculated indicator series.</returns> public static double[] Calculate(double[] price) { Condition.Requires(price, "price") .IsNotEmpty(); var fastSma = SMA.Calculate(price, 5); var slowSma = SMA.Calculate(price, 34); var ao = new double[price.Length]; for (int i = 0; i < price.Length; i++) { ao[i] = fastSma[i] - slowSma[i]; } return(ao); }
/// <summary> /// Calculates indicator. /// </summary> /// <param name="price">Price series.</param> /// <param name="period">Indicator period.</param> /// <returns>Calculated indicator series.</returns> public static double[] Calculate(double[] price, int period) { Condition.Requires(price, "price") .IsNotEmpty(); Condition.Requires(period, "period") .IsGreaterThan(0) .IsLessOrEqual(price.Length); var ao = AO.Calculate(price); var smaOfAo = SMA.Calculate(ao, 5); var ac = new double[price.Length]; for (var i = 0; i < price.Length; ++i) { ac[i] = ao[i] - smaOfAo[i]; } return(ac); }