/// <summary>
        /// 更新数据到图像
        /// </summary>
        /// <param name="obj"></param>
        public void UpdateDataToGraph(List <SecurityData> list, bool clear)
        {
            if (clear)
            {
                DataSource.Clear();
            }
            BarShape    barVolume   = GetShape("成交量") as BarShape;
            CandleShape candleShape = GetShape("K线") as CandleShape;
            int         startIndex  = DataSource.RowsCount;

            if (startIndex < 0)
            {
                startIndex = 0;
            }
            for (int i = 0; i < list.Count; i++)
            {
                SecurityData data = list[i];
                if (!double.IsNaN(data.close))
                {
                    DataSource.Set(data.date, COLUMN_VOLUME, data.volume);
                    int index = DataSource.GetRowIndex(data.date);
                    DataSource.Set2(index, COLUMN_OPEN, data.open);
                    DataSource.Set2(index, COLUMN_HIGH, data.high);
                    DataSource.Set2(index, COLUMN_LOW, data.low);
                    DataSource.Set2(index, COLUMN_CLOSE, data.close);
                    if (data.open > data.close)
                    {
                        DataSource.Set2(index, barVolume.StyleField, 0);
                        DataSource.Set2(index, candleShape.StyleField, 0);
                        DataSource.Set2(index, barVolume.ColorField, System.Drawing.Color.FromArgb(80, 255, 255).ToArgb());
                    }
                    else
                    {
                        DataSource.Set2(index, barVolume.StyleField, 1);
                        DataSource.Set2(index, candleShape.StyleField, 1);
                        DataSource.Set2(index, barVolume.ColorField, System.Drawing.Color.FromArgb(255, 80, 80).ToArgb());
                    }
                }
            }

            int indicatorsSize = indicators.Count;

            for (int i = 0; i < indicatorsSize; i++)
            {
                indicators[i].OnCalculate(startIndex);
            }
            RefreshGraph();
        }
Exemple #2
0
        /// <summary>
        /// 初始化控件
        /// </summary>
        public void InitControl()
        {
            indicators.Clear();
            RemoveAll();
            if (minuteMode)
            {
                AllowDrag = false;
                DataSource.SetColsCapacity(20);
                IsMinute                      = true;
                AutoFillXScale                = true;
                ScrollAddSpeed                = true;
                XFieldText                    = "日期";
                CanMoveShape                  = true;
                LeftYScaleWidth               = 80;
                RightYScaleWidth              = 80;
                XScalePixel                   = 21;
                mainDiv                       = AddChartDiv(70);
                mainDiv.ShowVGrid             = true;
                MinuteLineMax                 = 0;
                MinuteLineMin                 = 0;
                mainDiv.LeftYScale.ScaleType  = YScaleType.EqualRatio;
                mainDiv.RightYScale.ScaleType = YScaleType.EqualRatio;
                mainDiv.Title                 = "分时线";
                mainDiv.XScale.Visible        = false;
                List <double> scaleSteps = new List <double>();
                scaleSteps.Add(LbCommon.GetDateNum(1970, 1, 1, 10, 0, 0, 0));
                scaleSteps.Add(LbCommon.GetDateNum(1970, 1, 1, 10, 30, 0, 0));
                scaleSteps.Add(LbCommon.GetDateNum(1970, 1, 1, 11, 0, 0, 0));
                scaleSteps.Add(LbCommon.GetDateNum(1970, 1, 1, 11, 30, 0, 0));
                scaleSteps.Add(LbCommon.GetDateNum(1970, 1, 1, 13, 30, 0, 0));
                scaleSteps.Add(LbCommon.GetDateNum(1970, 1, 1, 14, 0, 0, 0));
                scaleSteps.Add(LbCommon.GetDateNum(1970, 1, 1, 14, 30, 0, 0));
                mainDiv.XScale.ScaleSteps = scaleSteps;
                mainDiv.PaddingBottom     = 10;
                mainDiv.PaddingTop        = 10;
                LineShape lineShape = AddLine("分时线", COLUMN_CLOSE, mainDiv);
                lineShape.LineColor = Color.White;
                //成交量
                volumeDiv = AddChartDiv(30);
                volumeDiv.LeftYScale.Distance = 60;
                volumeDiv.Title = "成交量";
                volumeDiv.RightYScale.Distance = 60;
                volumeDiv.XScale.ScaleSteps    = scaleSteps;
                BarShape barShape = AddBar("成交量", COLUMN_VOLUME, volumeDiv);
                volumeDiv.XScale.Format = "hh:mm";
                barShape.Title          = "";
                barShape.BarStyle       = BarStyle.Line;
                SetBar("成交量", System.Drawing.Color.FromArgb(255, 255, 80), System.Drawing.Color.FromArgb(255, 255, 80));
                if (!Program.BlackOrWhite)
                {
                    mainDiv.ForeColor = Color.Black;
                    mainDiv.BackColor = Color.White;
                    mainDiv.LeftYScale.TipForeColor    = Color.White;
                    mainDiv.RightYScale.TipForeColor   = Color.White;
                    volumeDiv.LeftYScale.TipForeColor  = Color.White;
                    volumeDiv.RightYScale.TipForeColor = Color.White;
                    volumeDiv.XScale.TipForeColor      = Color.White;
                    volumeDiv.BackColor              = Color.White;
                    mainDiv.BorderColor              = Color.Black;
                    volumeDiv.BorderColor            = Color.Black;
                    macdDiv.BorderColor              = Color.Black;
                    mainDiv.LeftYScale.ForeColor     = Color.Black;
                    mainDiv.RightYScale.ForeColor    = Color.Black;
                    mainDiv.LeftYScale.ScaleColor    = Color.Black;
                    mainDiv.RightYScale.ScaleColor   = Color.Black;
                    volumeDiv.LeftYScale.ForeColor   = Color.Black;
                    volumeDiv.RightYScale.ForeColor  = Color.Black;
                    volumeDiv.LeftYScale.ScaleColor  = Color.Black;
                    volumeDiv.RightYScale.ScaleColor = Color.Black;
                    mainDiv.GridColor           = Color.Black;
                    volumeDiv.GridColor         = Color.Black;
                    lineShape.LineColor         = Color.Black;
                    barShape.UpColor            = Color.Black;
                    barShape.DownColor          = Color.Black;
                    volumeDiv.XScale.ForeColor  = Color.Black;
                    volumeDiv.XScale.ScaleColor = Color.Black;
                }
            }
            else
            {
                AllowDrag = true;
                DataSource.SetColsCapacity(20);
                IsMinute               = false;
                AutoFillXScale         = false;
                ScrollAddSpeed         = true;
                XFieldText             = "日期";
                CanMoveShape           = true;
                LeftYScaleWidth        = 80;
                RightYScaleWidth       = 80;
                XScalePixel            = 11;
                mainDiv                = AddChartDiv(60);
                mainDiv.Title          = "日线";
                mainDiv.XScale.Visible = false;
                mainDiv.PaddingBottom  = 10;
                mainDiv.PaddingTop     = 10;
                //mainDiv.LeftYScale.System = VScaleSystem.Logarithmic;
                mainDiv.RightYScale.ScaleType = YScaleType.Percent;
                CandleShape candleShape = AddCandle("K线", COLUMN_OPEN, COLUMN_HIGH, COLUMN_LOW, COLUMN_CLOSE, mainDiv);
                candleShape.UpColor     = Color.FromArgb(255, 80, 80);
                candleShape.DownColor   = Color.FromArgb(80, 255, 255);
                candleShape.CandleStyle = CandleStyle.CloseLine;
                candleShape.StyleField  = CTableEx.AutoField;
                candleShape.ColorField  = CTableEx.AutoField;
                dataSource.AddColumn(candleShape.StyleField);
                dataSource.AddColumn(candleShape.ColorField);
                IndicatorMovingAverage indBoll = (IndicatorMovingAverage)AddIndicator("MA");
                indBoll.SetParam(COLUMN_CLOSE, mainDiv);
                //成交量
                volumeDiv = AddChartDiv(15);
                volumeDiv.XScale.Visible        = false;
                volumeDiv.LeftYScale.Magnitude  = 10000;
                volumeDiv.RightYScale.Magnitude = 10000;
                volumeDiv.LeftYScale.Digit      = 0;
                volumeDiv.RightYScale.Digit     = 0;
                BarShape barShape = AddBar("成交量", COLUMN_VOLUME, volumeDiv);
                barShape.Title      = "成交量";
                barShape.BarStyle   = BarStyle.Bar;
                barShape.Digit      = 0;
                barShape.StyleField = CTableEx.AutoField;
                barShape.ColorField = CTableEx.AutoField;
                dataSource.AddColumn(barShape.StyleField);
                dataSource.AddColumn(barShape.ColorField);
                SetBar("成交量", System.Drawing.Color.FromArgb(255, 255, 80), System.Drawing.Color.FromArgb(125, 206, 235));
                macdDiv = AddChartDiv(25);
                macdDiv.XScale.Format = "hh:mm";
                div2Indicator         = ChangeIndicator(indicatorName);
                indicators.Add(indBoll);
                indicators.Add(div2Indicator);
                if (!Program.BlackOrWhite)
                {
                    mainDiv.LeftYScale.TipForeColor    = Color.White;
                    mainDiv.RightYScale.TipForeColor   = Color.White;
                    volumeDiv.LeftYScale.TipForeColor  = Color.White;
                    volumeDiv.RightYScale.TipForeColor = Color.White;
                    mainDiv.ForeColor                = Color.Black;
                    mainDiv.BackColor                = Color.White;
                    volumeDiv.BackColor              = Color.White;
                    macdDiv.BackColor                = Color.White;
                    mainDiv.BorderColor              = Color.Black;
                    volumeDiv.BorderColor            = Color.Black;
                    macdDiv.BorderColor              = Color.Black;
                    mainDiv.LeftYScale.ForeColor     = Color.Black;
                    mainDiv.RightYScale.ForeColor    = Color.Black;
                    mainDiv.LeftYScale.ScaleColor    = Color.Black;
                    mainDiv.RightYScale.ScaleColor   = Color.Black;
                    volumeDiv.LeftYScale.ForeColor   = Color.Black;
                    volumeDiv.RightYScale.ForeColor  = Color.Black;
                    volumeDiv.LeftYScale.ScaleColor  = Color.Black;
                    volumeDiv.RightYScale.ScaleColor = Color.Black;
                    macdDiv.LeftYScale.ForeColor     = Color.Black;
                    macdDiv.RightYScale.ForeColor    = Color.Black;
                    macdDiv.LeftYScale.ScaleColor    = Color.Black;
                    macdDiv.RightYScale.ScaleColor   = Color.Black;
                    macdDiv.XScale.ForeColor         = Color.Black;
                    macdDiv.XScale.ScaleColor        = Color.Black;
                    mainDiv.GridColor                = Color.Black;
                    volumeDiv.GridColor              = Color.Black;
                    macdDiv.GridColor                = Color.Black;

                    candleShape.UpColor   = Color.Black;
                    candleShape.DownColor = Color.Black;
                    barShape.UpColor      = Color.Black;
                    barShape.DownColor    = Color.Black;

                    candleShape.HighTitleColor  = Color.Black;
                    candleShape.LowTitleColor   = Color.Black;
                    candleShape.CloseTitleColor = Color.Black;
                    candleShape.OpenTitleColor  = Color.Black;
                    List <BaseShape> shapes = indBoll.GetShapeList();
                    for (int i = 0; i < shapes.Count; i++)
                    {
                        BaseShape bShape = shapes[i] as BaseShape;
                        if (bShape is BarShape)
                        {
                            (bShape as BarShape).DownColor = Color.Black;
                            (bShape as BarShape).UpColor   = Color.Black;
                        }
                        else if (bShape is LineShape)
                        {
                            (bShape as LineShape).LineColor = Color.Black;
                        }
                    }
                }
            }
        }