/// <summary> /// Adds an index to the moving average. /// </summary> /// <param name="value">The index value.</param> public void AddIndex(decimal value) { if (_previous != decimal.MinValue) { if (value >= _previous) { _gainAverage.AddIndex(value - _previous); _lossAverage.AddIndex(0); } else { _gainAverage.AddIndex(0); _lossAverage.AddIndex(_previous - value); } } _previous = value; if (_lossAverage.GetValue() == 0) { _strength = 100; return; } var relativeStrength = _gainAverage.GetValue() / _lossAverage.GetValue(); _strength = 100 - (100 / (1 + relativeStrength)); }
/// <summary> /// Adds an index to the moving average. /// </summary> /// <param name="value">The index value.</param> public void AddIndex(decimal value) { _slowAverage.AddIndex(value); _fastAverage.AddIndex(value); if (_slowAverage.IsReady() && _fastAverage.IsReady()) { _signAverage.AddIndex(_fastAverage.GetValue() - _slowAverage.GetValue()); } }