/// <summary> /// Calculates indicator. /// </summary> /// <param name="price">Price series.</param> /// <param name="period">Indicator period.</param> /// <param name="timeSeries">Instrument <c>ohlc</c> time series.</param> /// <returns>Calculated indicator series.</returns> public static double[] Calculate(double[] price, int period, TimeSeries timeSeries) { Condition.Requires(price, "price") .IsNotEmpty(); Condition.Requires(period, "period") .IsGreaterThan(0) .IsLessOrEqual(price.Length); Condition.Requires(timeSeries, "timeSeries") .IsNotNull(); var bulls = new double[price.Length]; var ema = EMA.Calculate(price, period); for (var i = 0; i < price.Length; i++) { bulls[i] = timeSeries.High[i] - ema[i]; } return(bulls); }