Ejemplo n.º 1
0
        public IPriceSeries Apply(IPriceSeries series)
        {
            double groupInterval = (double)series.Count / (double)myMaxPoints;

            if (groupInterval <= 1)
            {
                return(series);
            }

            var descriptor = new ObjectDescriptor("ThinOut", ObjectDescriptor.Param("MaxCount", myMaxPoints));
            var seriesId   = series.Identifier.Modify(descriptor);

            return(PriceSeries.FromSortedSet(seriesId, GroupPointsByAverage(series, (int)Math.Ceiling(groupInterval))));
        }
Ejemplo n.º 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));
        }