public IPriceSeries Calculate( IPriceSeries prices ) { var points = new List<SimplePrice>(); for ( int i = NumDays; i < prices.Count; ++i ) { var pricesRange = new PriceSeriesRange( prices, ClosedInterval.FromOffsetLength( i - NumDays, NumDays ) ); double value = pricesRange.Average( p => p.Value ); var point = new SimplePrice( prices[ i ].Time, value ); points.Add( point ); } var descriptor = new ObjectDescriptor( "SMA", ObjectDescriptor.Param( "NumDays", NumDays ) ); var seriesId = prices.Identifier.Derive( descriptor ); return new PriceSeries( seriesId, points ); }
public IPriceSeries Calculate(IPriceSeries prices) { var points = new List <SimplePrice>(); for (int i = NumDays; i < prices.Count; ++i) { var pricesRange = new PriceSeriesRange(prices, ClosedInterval.FromOffsetLength(i - NumDays, NumDays)); double value = pricesRange.Average(p => p.Value); var point = new SimplePrice(prices[i].Time, value); points.Add(point); } var descriptor = new ObjectDescriptor("SMA", ObjectDescriptor.Param("NumDays", NumDays)); var seriesId = prices.Identifier.Derive(descriptor); return(new PriceSeries(seriesId, points)); }