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 );
        }
Beispiel #2
0
        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));
        }