Пример #1
0
        private void GenerateOHLCData(NStockSeries stock, double dPrevClose)
        {
            double dGrowProbability = 0.0;
            double open, high, low, close;

            stock.ClearDataPoints();
            Random random = new Random();

            for (int nIndex = 0; nIndex < 200; nIndex++)
            {
                open = dPrevClose;

                if (dPrevClose < 25)
                {
                    dGrowProbability = 1.0;
                }
                else
                {
                    if (((nIndex >= 20) && (nIndex <= 80)) || ((nIndex >= 120) && (nIndex <= 180)))
                    {
                        dGrowProbability = 0.75;
                    }
                    else
                    {
                        dGrowProbability = 0.25;
                    }
                }

                if (Random.NextDouble() < dGrowProbability)
                {
                    // upward price change
                    close = open + (2 + (Random.NextDouble() * 20));
                    high  = close + (Random.NextDouble() * 10);
                    low   = open - (Random.NextDouble() * 10);
                }
                else
                {
                    // downward price change
                    close = open - (2 + (Random.NextDouble() * 20));
                    high  = open + (Random.NextDouble() * 10);
                    low   = close - (Random.NextDouble() * 10);
                }

                if (low < 1)
                {
                    low = 1;
                }

                dPrevClose = close;

                stock.OpenValues.Add(open);
                stock.HighValues.Add(high);
                stock.LowValues.Add(low);
                stock.CloseValues.Add(close);
            }
        }
Пример #2
0
        internal void GenerateOHLCData(NStockSeries s, double dPrevClose, int historicalDays)
        {
            DateTime  now = DateTime.Now;
            NTimeline timeline = m_Calendar.CreateTimeline(new NDateTimeRange(now, now + new TimeSpan(360, 0, 0, 0, 0)));
            double    open, high, low, close;

            s.ClearDataPoints();

            int numberOfWorkingDays = historicalDays;

            if (ZoomModeDropDownList.SelectedIndex == 0)
            {
                numberOfWorkingDays += 7;
            }
            else
            {
                numberOfWorkingDays += 31;
            }

            for (; numberOfWorkingDays > 0; numberOfWorkingDays--)
            {
                open = dPrevClose;

                if (dPrevClose < 25 || Random.NextDouble() > 0.5)
                {
                    // upward price change
                    close = open + (2 + (Random.NextDouble() * 20));
                    high  = close + (Random.NextDouble() * 10);
                    low   = open - (Random.NextDouble() * 10);
                }
                else
                {
                    // downward price change
                    close = open - (2 + (Random.NextDouble() * 20));
                    high  = open + (Random.NextDouble() * 10);
                    low   = close - (Random.NextDouble() * 10);
                }

                if (low < 1)
                {
                    low = 1;
                }

                dPrevClose = close;

                s.OpenValues.Add(open);
                s.HighValues.Add(high);
                s.LowValues.Add(low);
                s.CloseValues.Add(close);
                s.XValues.Add(now.ToOADate());

                // advance to next working day
                now = timeline.AddTimeSpan(now, new NDateTimeSpan(1, NDateTimeUnit.Day));
            }
        }
Пример #3
0
        private void GenerateStockData(NStockSeries stock, int count, double dPrevClose)
        {
            DateTime dt = new DateTime(2006, 5, 15);
            double   dGrowProbability = 0.0;
            double   open, high, low, close;

            stock.ClearDataPoints();

            for (int nIndex = 0; nIndex < count; nIndex++)
            {
                open = dPrevClose;

                if ((nIndex % 100) <= 20)
                {
                    // downtrend
                    dGrowProbability = 0.20;
                }
                else
                {
                    // uptrend
                    dGrowProbability = 0.75;
                }

                if (Random.NextDouble() < dGrowProbability)
                {
                    // upward price change
                    close = open + 2 + (Random.NextDouble() * 20);
                    high  = close + (Random.NextDouble() * 10);
                    low   = open - (Random.NextDouble() * 10);
                }
                else
                {
                    // downward price change
                    close = open - (2 + (Random.NextDouble() * 20));
                    high  = open + (Random.NextDouble() * 10);
                    low   = close - (Random.NextDouble() * 10);
                }

                if (low < 1)
                {
                    low = 1;
                }

                dPrevClose = close;

                stock.OpenValues.Add(open);
                stock.HighValues.Add(high);
                stock.LowValues.Add(low);
                stock.CloseValues.Add(close);
                stock.XValues.Add(dt.ToOADate());

                dt += new TimeSpan(1, 0, 0, 0);
            }
        }
Пример #4
0
        internal void GenerateOHLCData(NStockSeries s, double dPrevClose, int nCount, NRange1DD range)
        {
            double open, high, low, close;

            s.ClearDataPoints();

            for (int nIndex = 0; nIndex < nCount; nIndex++)
            {
                open = dPrevClose;
                bool upward = false;

                if (range.Begin > dPrevClose)
                {
                    upward = true;
                }
                else if (range.End < dPrevClose)
                {
                    upward = false;
                }
                else
                {
                    upward = Random.NextDouble() > 0.5;
                }

                if (upward)
                {
                    // upward price change
                    close = open + (2 + (Random.NextDouble() * 20));
                    high  = close + (Random.NextDouble() * 10);
                    low   = open - (Random.NextDouble() * 10);
                }
                else
                {
                    // downward price change
                    close = open - (2 + (Random.NextDouble() * 20));
                    high  = open + (Random.NextDouble() * 10);
                    low   = close - (Random.NextDouble() * 10);
                }

                if (low < 1)
                {
                    low = 1;
                }

                dPrevClose = close;

                s.OpenValues.Add(open);
                s.HighValues.Add(high);
                s.LowValues.Add(low);
                s.CloseValues.Add(close);
            }
        }
Пример #5
0
        private void GenerateData(NStockSeries s, NWorkCalendar calendar, double dPrevClose, int nCount)
        {
            DateTime  now = DateTime.Now;
            NTimeline timeline = calendar.CreateTimeline(new NDateTimeRange(now, now + new TimeSpan(730, 0, 0, 0, 0)));
            double    open, high, low, close;

            s.ClearDataPoints();

            Random random = new Random();

            for (int nIndex = 0; nIndex < nCount; nIndex++)
            {
                open = dPrevClose;

                if (dPrevClose < 25 || random.NextDouble() > 0.5)
                {
                    // upward price change
                    close = open + (2 + (random.NextDouble() * 20));
                    high  = close + (random.NextDouble() * 10);
                    low   = open - (random.NextDouble() * 10);
                }
                else
                {
                    // downward price change
                    close = open - (2 + (random.NextDouble() * 20));
                    high  = open + (random.NextDouble() * 10);
                    low   = close - (random.NextDouble() * 10);
                }

                if (low < 1)
                {
                    low = 1;
                }

                dPrevClose = close;

                s.OpenValues.Add(open);
                s.HighValues.Add(high);
                s.LowValues.Add(low);
                s.CloseValues.Add(close);
                s.XValues.Add(now.ToOADate());

                // advance to next working day
                now = timeline.AddTimeSpan(now, new NDateTimeSpan(1, NDateTimeUnit.Day));
            }
        }
        public static void GenerateOHLCData(NStockSeries s, double dPrevClose, int nCount, NRange1DD range)
        {
            double open, high, low, close;

            s.ClearDataPoints();

            for (int nIndex = 0; nIndex < nCount; nIndex++)
            {
                GenerateOHLCDataPoint(dPrevClose, range, out open, out high, out low, out close);

                dPrevClose = close;

                s.OpenValues.Add(open);
                s.HighValues.Add(high);
                s.LowValues.Add(low);
                s.CloseValues.Add(close);
            }
        }
Пример #7
0
        private void GenerateOHLCData(NStockSeries s, int nCount)
        {
            double prevclose = 300;
            double open, high, low, close;

            s.ClearDataPoints();

            for (int nIndex = 0; nIndex < nCount; nIndex++)
            {
                open = prevclose;

                if (prevclose < 25 || Random.NextDouble() > 0.5)
                {
                    // upward price change
                    close = open + (2 + (Random.NextDouble() * 20));
                    high  = close + (Random.NextDouble() * 10);
                    low   = open - (Random.NextDouble() * 10);
                }
                else
                {
                    // downward price change
                    close = open - (2 + (Random.NextDouble() * 20));
                    high  = open + (Random.NextDouble() * 10);
                    low   = close - (Random.NextDouble() * 10);
                }

                if (low < 1)
                {
                    low = 1;
                }

                prevclose = close;

                s.OpenValues.Add(open);
                s.HighValues.Add(high);
                s.LowValues.Add(low);
                s.CloseValues.Add(close);
            }
        }
        public static void GenerateOHLCData(NStockSeries s, double dPrevClose, int nCount)
        {
            double open, high, low, close;

            s.ClearDataPoints();

            for (int nIndex = 0; nIndex < nCount; nIndex++)
            {
                open = dPrevClose;

                if (dPrevClose < 25 || rand.NextDouble() > 0.5)
                {
                    // upward price change
                    close = open + (2 + (rand.NextDouble() * 20));
                    high  = close + (rand.NextDouble() * 10);
                    low   = open - (rand.NextDouble() * 10);
                }
                else
                {
                    // downward price change
                    close = open - (2 + (rand.NextDouble() * 20));
                    high  = open + (rand.NextDouble() * 10);
                    low   = close - (rand.NextDouble() * 10);
                }

                if (low < 1)
                {
                    low = 1;
                }

                dPrevClose = close;

                s.OpenValues.Add(open);
                s.HighValues.Add(high);
                s.LowValues.Add(low);
                s.CloseValues.Add(close);
            }
        }
Пример #9
0
 public void Reset( )
 {
     m_Stock.ClearDataPoints();
 }