public override void ApplyMovingAverages() { var periods = new[] { 7, 10, 30 }; Console.WriteLine("ApplyMovingAverages()"); foreach (var period in periods) { var closePrices = this.QuoteCandles.Select(x => Convert.ToSingle(x.Close)).ToArray(); var outMovingAverages = new double[closePrices.Length]; var resultState = TicTacTec.TA.Library.Core.MovingAverage( 0, closePrices.Length - 1, closePrices, period, Core.MAType.Ema, out var outBegIndex, out var outNbElement, outMovingAverages); var mvgAvg = new MovingAvgInfo { StartIndex = outBegIndex, EndIndex = outNbElement, MovingAverages = outMovingAverages.Select(d => Convert.ToDecimal(d)).ToArray(), Period = period }; MergeMvgAvg(mvgAvg); } }
private void MergeMvgAvg(MovingAvgInfo movingAvgInfo) { for (int i = 0; i < movingAvgInfo.EndIndex; i++) { switch (movingAvgInfo.Period) { case 7: this.Quotes[movingAvgInfo.StartIndex + i].MovingAvg7 = movingAvgInfo.MovingAverages[i]; break; case 10: this.Quotes[movingAvgInfo.StartIndex + i].MovingAvg10 = movingAvgInfo.MovingAverages[i]; break; case 30: this.Quotes[movingAvgInfo.StartIndex + i].MovingAvg30 = movingAvgInfo.MovingAverages[i]; break; } } }