public void TwoPrices()
        {
            // arrange
            var             p     = new InMemoryPriceReader();
            var             c     = new CandleStickReader(timeframe: 15, priceReader: p);
            int             count = 0;
            CandleStickItem item  = null;
            var             dt1   = new DateTime(2017, 5, 5, 10, 1, 0);
            var             dt2   = new DateTime(2017, 5, 5, 10, 2, 0);

            p.AddSeedPrice(dt1, 12m, 0m, 0m);
            p.AddSeedPrice(dt2, 14m, 0m, 0m);

            c.NewCandleStick += (sender, e) =>
            {
                count++;
                item = e.CandleStick;
            };

            // a
            c.Start();

            // a
            Assert.Equal(1, count);
            Assert.Equal(12m, item.Low);
            Assert.Equal(12m, item.Open);
            Assert.Equal(14m, item.High);
            Assert.Equal(14m, item.Close);
            Assert.Equal(CandleStickColor.Green,
                         item.Color);
        }
Esempio n. 2
0
        public CandleStickDemo()
            : base("Demonstration of the Candlestick Chart Type",
                   "CandleStick Demo", DemoType.Bar)
        {
            GraphPane myPane = base.GraphPane;

            myPane.Title.Text       = "Candlestick Chart Demo";
            myPane.XAxis.Title.Text = "Trading Date";
            myPane.YAxis.Title.Text = "Share Price, $US";

            StockPointList spl  = new StockPointList();
            Random         rand = new Random();

            // First day is jan 1st
            XDate  xDate = new XDate(2006, 1, 1);
            double open  = 50.0;

            for (int i = 0; i < 50; i++)
            {
                double x     = xDate.XLDate;
                double close = open + rand.NextDouble() * 10.0 - 5.0;
                double hi    = Math.Max(open, close) + rand.NextDouble() * 5.0;
                double low   = Math.Min(open, close) - rand.NextDouble() * 5.0;

                StockPt pt = new StockPt(x, hi, low, open, close, 100000);
                spl.Add(pt);

                open = close;
                // Advance one day
                xDate.AddDays(1.0);
                // but skip the weekends
                if (XDate.XLDateToDayOfWeek(xDate.XLDate) == 6)
                {
                    xDate.AddDays(2.0);
                }
            }

            CandleStickItem myCurve = myPane.AddCandleStick("trades", spl, Color.Black);

            myCurve.Stick.IsAutoSize = true;
            myCurve.Stick.Color      = Color.Blue;

            // Use DateAsOrdinal to skip weekend gaps
            myPane.XAxis.Type      = AxisType.DateAsOrdinal;
            myPane.XAxis.Scale.Min = new XDate(2006, 1, 1);

            // pretty it up a little
            myPane.Chart.Fill = new Fill(Color.White, Color.LightGoldenrodYellow, 45.0f);
            myPane.Fill       = new Fill(Color.White, Color.FromArgb(220, 220, 255), 45.0f);

            base.ZedGraphControl.AxisChange();
        }
        public void SinglePrice_OneCandleStick()
        {
            // arrange
            var             p     = new InMemoryPriceReader();
            var             c     = new CandleStickReader(timeframe: 15, priceReader: p);
            int             count = 0;
            CandleStickItem item  = null;

            p.AddSeedPrice(12m);
            c.NewCandleStick += (sender, e) => {
                count++;
                item = e.CandleStick;
            };

            c.Start();

            Assert.Equal(1, count);
            Assert.Equal(12m, item.Open);
            Assert.Equal(12m, item.High);
            Assert.Equal(12m, item.Close);
            Assert.Equal(12m, item.Low);
            Assert.Equal(CandleStickColor.Green, item.Color);
        }