public static void FillWithSampleData(DataSeries series, int numberOfItems, int sum)
        {
            int localSum = 0;

            Random random = new Random((int)(series.GetHashCode() + DateTime.Now.Ticks));

            for (int i = 0; i < numberOfItems; i++)
            {
                int randomNumber = 0;

                while (randomNumber <= 0)
                    randomNumber = random.Next(sum / numberOfItems - 3, sum / numberOfItems + 3);

                if (localSum + randomNumber > sum)
                    randomNumber = sum - localSum;

                if ((i == numberOfItems - 1) && (localSum + randomNumber < sum))
                    randomNumber = sum - localSum;

                localSum += randomNumber;

                DataPoint dataPoint = new DataPoint();
                dataPoint.YValue = randomNumber;

                series.Add(dataPoint);
            }
        }
Пример #2
0
        public static void FillWithSampleData(DataSeries series, int numberOfItems, int sum)
        {
            int localSum = 0;

            Random random = new Random((int)(series.GetHashCode() + DateTime.Now.Ticks));

            for (int i = 0; i < numberOfItems; i++)
            {
                int randomNumber = 0;

                while (randomNumber <= 0)
                {
                    randomNumber = random.Next(sum / numberOfItems - 3, sum / numberOfItems + 3);
                }

                if (localSum + randomNumber > sum)
                {
                    randomNumber = sum - localSum;
                }

                if ((i == numberOfItems - 1) && (localSum + randomNumber < sum))
                {
                    randomNumber = sum - localSum;
                }

                localSum += randomNumber;

                DataPoint dataPoint = new DataPoint();
                dataPoint.YValue = randomNumber;

                series.Add(dataPoint);
            }
        }
Пример #3
0
        public static void FillWithSampleData(DataSeries series, int numberOfItems)
        {
            Random random = new Random((int)(series.GetHashCode() + DateTime.Now.Ticks));

            for (int i = 0; i < numberOfItems; i++)
            {
                int randomNumber = random.Next(30, 100);
                series.Add(new DataPoint {
                    YValue = randomNumber
                });
            }
        }
        public static void FillWithSampleData(DataSeries series, int numberOfItems, int max, int deviation)
        {
            Random random = new Random((int)(series.GetHashCode() + DateTime.Now.Ticks));

            if (deviation > max)
                deviation = max;

            for (int i = 0; i < numberOfItems; i++)
            {
                series.Add(new DataPoint(random.Next(max - deviation, max)));
            }
        }
Пример #5
0
        public static void FillWithSampleData(DataSeries series, int numberOfItems, int max, int deviation)
        {
            Random random = new Random((int)(series.GetHashCode() + DateTime.Now.Ticks));

            if (deviation > max)
            {
                deviation = max;
            }

            for (int i = 0; i < numberOfItems; i++)
            {
                series.Add(new DataPoint(random.Next(max - deviation, max)));
            }
        }
Пример #6
0
        public static void FillWithSampleFinancialData(DataSeries series, int numberOfItems, int numberOfPeaks)
        {
            Random random = new Random((int)(series.GetHashCode() + DateTime.Now.Ticks));

            int[] openArray  = new int[numberOfItems];
            int[] closeArray = new int[numberOfItems];
            int[] maxArray   = new int[numberOfItems];
            int[] minArray   = new int[numberOfItems];

            int[] peakIndices = new int[numberOfPeaks];

            // Calculate peak indices
            for (int i = 1; i <= numberOfPeaks; i++)
            {
                peakIndices[i - 1] = Math.Min(i * numberOfItems / numberOfPeaks, numberOfItems - 1);
            }

            bool trend = false;

            int currentIndex = 0;
            int startValue   = 20;

            //Calculate open close values
            for (int j = 0; j < numberOfPeaks; j++)
            {
                trend = !trend;

                int peakIndex = numberOfItems - 1;

                try
                {
                    peakIndex = peakIndices[j];
                }
                catch { }

                for (int k = currentIndex + 1; k <= peakIndex; k++, currentIndex++)
                {
                    int factor = random.Next(1, 5);

                    if (trend)
                    {
                        openArray[k] = random.Next(Math.Abs(startValue + factor), Math.Abs(startValue + (int)1.1 * factor));
                    }
                    else
                    {
                        int min = Math.Min(Math.Abs(startValue - factor), Math.Abs(startValue - (int)1.1 * factor));
                        int max = Math.Max(Math.Abs(startValue - (int)1.1 * factor), Math.Abs(startValue - factor));

                        openArray[k] = random.Next(min, max);
                    }
                    closeArray[k - 1] = openArray[k];
                }
            }

            openArray[0] = random.Next(startValue, closeArray[0]);
            closeArray[numberOfItems - 1] = random.Next(openArray[numberOfItems - 1], openArray[numberOfItems - 1] + 15);

            random = new Random((int)(series.GetHashCode() + DateTime.Now.Ticks));

            //Calculate high values
            for (int i = 0; i < numberOfItems; i++)
            {
                int max = Math.Max(openArray[i], closeArray[i]);
                int abs = Math.Abs(openArray[i] - closeArray[i]);

                do
                {
                    maxArray[i] = random.Next(max + 1, max + 3);
                }while (maxArray[i] <= max);
            }

            //Calculate low values
            for (int i = 0; i < numberOfItems; i++)
            {
                int min = Math.Min(openArray[i], closeArray[i]);

                Debug.Assert(min >= 0, "Open or close value is negative");

                int abs = Math.Abs(openArray[i] - closeArray[i]);

                do
                {
                    if (min > 0)
                    {
                        minArray[i] = Math.Abs(random.Next(min - 3, min - 1));
                    }
                    else
                    {
                        minArray[i] = 0;
                    }
                }while (minArray[i] > min || minArray[i] < 0);
            }

            List <DataPoint> randomPoints = new List <DataPoint>();

            for (int i = 0; i < numberOfItems; i++)
            {
                DataPoint point = new DataPoint();
                point.Open  = openArray[i];
                point.Close = closeArray[i];
                point.Low   = minArray[i];
                point.High  = maxArray[i];

                randomPoints.Add(point);
            }

            IEnumerable <DataPoint> invalid = from r in randomPoints
                                              where r.Low < 0 || r.Open < 0 || r.High < 0 || r.Close < 0
                                              select r;

            Debug.Assert(invalid.Count() == 0, "The generated data contains negative values.");

            series.AddRange(randomPoints);
        }
Пример #7
0
        public static void FillWithSampleRadialData(DataSeries series)
        {
            Random random = new Random((int)(series.GetHashCode() + DateTime.Now.Ticks));

            FillWithSampleData(series, random.Next(4, 7));
        }
 public static void FillWithSampleData(DataSeries series, int numberOfItems)
 {
     Random random = new Random((int)(series.GetHashCode() + DateTime.Now.Ticks));
     for (int i = 0; i < numberOfItems; i++)
     {
         int randomNumber = random.Next(30, 100);
         series.Add(new DataPoint { YValue = randomNumber });
     }
 }
 public static void FillWithSampleData(DataSeries series)
 {
     Random random = new Random((int)(series.GetHashCode() + DateTime.Now.Ticks));
     FillWithSampleData(series, random.Next(10, 15));
 }
        public static void FillWithSampleFinancialData(DataSeries series, int numberOfItems, int numberOfPeaks)
        {
            Random random = new Random((int)(series.GetHashCode() + DateTime.Now.Ticks));

            int[] openArray = new int[numberOfItems];
            int[] closeArray = new int[numberOfItems];
            int[] maxArray = new int[numberOfItems];
            int[] minArray = new int[numberOfItems];

            int[] peakIndices = new int[numberOfPeaks];

            // Calculate peak indices
            for (int i = 1; i <= numberOfPeaks; i++)
            {
                peakIndices[i - 1] = Math.Min(i * numberOfItems / numberOfPeaks, numberOfItems - 1);
            }

            bool trend = false;

            int currentIndex = 0;
            int startValue = 20;

            //Calculate open close values
            for (int j = 0; j < numberOfPeaks; j++)
            {
                trend = !trend;

                int peakIndex = numberOfItems - 1;

                try
                {
                    peakIndex = peakIndices[j];
                }
                catch { }

                for (int k = currentIndex + 1; k <= peakIndex; k++, currentIndex++)
                {
                    int factor = random.Next(1, 5) ;

                    if (trend)
                    {
                        openArray[k] = random.Next(Math.Abs(startValue + factor), Math.Abs(startValue + (int)1.1 * factor));
                    }
                    else
                    {
                        int min = Math.Min(Math.Abs(startValue - factor), Math.Abs(startValue - (int)1.1 * factor));
                        int max = Math.Max(Math.Abs(startValue - (int)1.1 * factor), Math.Abs(startValue - factor));

                        openArray[k] = random.Next(min, max);
                    }
                    closeArray[k - 1] = openArray[k];
                }
            }

            openArray[0] = random.Next(startValue, closeArray[0]);
            closeArray[numberOfItems - 1] = random.Next(openArray[numberOfItems - 1], openArray[numberOfItems - 1] + 15);

            random = new Random((int)(series.GetHashCode() + DateTime.Now.Ticks));

            //Calculate high values
            for (int i = 0; i < numberOfItems; i++)
            {
                int max = Math.Max(openArray[i], closeArray[i]);
                int abs = Math.Abs(openArray[i] - closeArray[i]);

                do
                {
                    maxArray[i] = random.Next(max + 1, max + 3 );
                }
                while (maxArray[i] <= max);
            }

            //Calculate low values
            for (int i = 0; i < numberOfItems; i++)
            {
                int min = Math.Min(openArray[i], closeArray[i]);

                Debug.Assert(min >= 0, "Open or close value is negative");

                int abs = Math.Abs(openArray[i] - closeArray[i]);

                do
                {
                    if (min > 0)
                        minArray[i] = Math.Abs(random.Next(min - 3 , min - 1));
                    else
                        minArray[i] = 0;
                }
                while ( minArray[i] > min || minArray[i] < 0);
            }

            List<DataPoint> randomPoints = new List<DataPoint>();

            for (int i = 0; i < numberOfItems; i++)
            {
                DataPoint point = new DataPoint();
                point.Open = openArray[i];
                point.Close = closeArray[i];
                point.Low = minArray[i];
                point.High = maxArray[i];

                randomPoints.Add(point);
            }

            IEnumerable<DataPoint> invalid = from r in randomPoints
                                             where r.Low < 0 || r.Open < 0 || r.High < 0 || r.Close < 0
                                             select r;

            Debug.Assert(invalid.Count() == 0, "The generated data contains negative values.");

            series.AddRange(randomPoints);
        }