/// <summary> /// Forecasts the series of the fitted model one point ahead. /// </summary> /// <param name="input">The input given to the indicator</param> /// <returns>A new value for this indicator</returns> protected override decimal ComputeNextValue(IndicatorDataPoint input) { _rollingData.Add((double)input.Value); if (_rollingData.IsReady) { var arrayData = _rollingData.ToArray(); arrayData = _diffOrder > 0 ? DifferenceSeries(_diffOrder, arrayData, out _diffHeads) : arrayData; TwoStepFit(arrayData); double summants = 0; if (_arOrder > 0) { for (var i = 0; i < _arOrder; i++) // AR Parameters { summants += ArParameters[i] * arrayData[i]; } } if (_maOrder > 0) { for (var i = 0; i < _maOrder; i++) // MA Parameters { summants += MaParameters[i] * _residuals[_maOrder + i + 1]; } } summants += Intercept; // By default equals 0 if (_diffOrder > 0) { var dataCast = arrayData.ToList(); dataCast.Insert(0, summants); // Prepends summants = InverseDifferencedSeries(dataCast.ToArray(), _diffHeads).First(); // Returns disintegrated series } return((decimal)summants); } return(0m); }
/// <summary> /// Get all pivot points, in the order such that first element in collection is the nearest to the present date /// </summary> /// <returns>An array of low and high pivot points. Ordered by time in descending order.</returns> /// <remarks>Returned array can be empty if no points have been registered yet/</remarks> public PivotPoint[] GetAllPivotPointsArray() { // Get all pivot points within rolling wind. collection as an array return(_windowPivotPoints.ToArray()); }