/// <summary> /// To handle the input value. /// </summary> /// <param name="input">The input value.</param> /// <returns>The resulting value.</returns> protected override IIndicatorValue OnProcess(IIndicatorValue input) { // используем дополнительную переменную IsFormed, // т.к. нужна задержка в один период для корректной инициализации скользящей средней _isFormed = MovingAverage.IsFormed; return(MovingAverage.Process(TrueRange.Process(input))); }
/// <summary> /// Обработать входное значение. /// </summary> /// <param name="input">Входное значение.</param> /// <returns>Результирующее значение.</returns> protected override IIndicatorValue OnProcess(IIndicatorValue input) { _dev.Process(input); var maValue = MovingAverage.Process(input); var value = new ComplexIndicatorValue(this); value.InnerValues.Add(MovingAverage, maValue); value.InnerValues.Add(UpBand, UpBand.Process(input)); value.InnerValues.Add(LowBand, LowBand.Process(input)); return(value); }