zoukankan      html  css  js  c++  java
  • The Stock in Chart

    Use chart to show stock chart

    void createchart()
    {
        // Create a chart and specify its location. 
        chart1.Series.Clear();
        chart1.ChartAreas.Clear();
        chart1.ChartAreas.Add("ChartArea1");
        chart1.Series.Add("Daily");
        chart1.Series[0].ChartType = SeriesChartType.Stock;
        chart1.ChartAreas["ChartArea1"].BackColor = System.Drawing.Color.Black;
    
        chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineWidth = 0;
        chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineWidth = 0;
    
        //Init
        chart1.Series["Daily"].Color = Color.Blue;
        chart1.Series["Daily"].XValueMember = "Day";
        chart1.Series["Daily"].YValueMembers = "High,Low,Open,Close";
        chart1.Series["Daily"].XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.DateTime;
        chart1.Series["Daily"].CustomProperties = "PriceDownColor=Green, PriceUpColor=Red";
        chart1.Series["Daily"]["OpenCloseStyle"] = "Line";
        chart1.Series["Daily"]["ShowOpenClose"] = "Both";
        chart1.DataManipulator.IsStartFromFirst = true;
        chart1.ChartAreas[0].AxisX.ScrollBar.Enabled = true;
        chart1.ChartAreas[0].AxisX.IsLabelAutoFit = true;
        chart1.ChartAreas[0].AxisX.ScaleView.Size = 8;
    
        chart1.ChartAreas[0].AxisX.LabelStyle.Format = "yyyy-MM-dd";
        chart1.ChartAreas[0].AxisX.Interval = 1;
        chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Months;
        chart1.ChartAreas[0].AxisX.IntervalOffset = 1;
    
        //Read in symbolfile
        List<String> dataLIST = new List<String>();
        //readinfile("C:/GlobeTrading/MarketData/NYSE/Stocks/Intradata/30 min/sivb.txt", ReadNormalToLower.Normal, out dataLIST);
        dataLIST.Add("01/04/2016,0930,116.67,117.14,115.23,116.73,18200");
        dataLIST.Add("01/04/2016,1000,116.98,117.17,115.75,116.59,16200");
        dataLIST.Add("01/04/2016,1030,116.56,116.65,115.94,116.24,10600");
        dataLIST.Add("01/04/2016,1100,116.24,116.24,115.31,115.67,6300");
        dataLIST.Add("01/04/2016,1130,115.67,117.06,115.67,117,2700");
        dataLIST.Add("01/04/2016,1200,117,117.02,115.92,116.31,7200");
        dataLIST.Add("01/04/2016,1230,116.31,116.79,116.22,116.56,6100");
        dataLIST.Add("01/04/2016,1300,116.52,116.74,115.35,115.44,18700");
        dataLIST.Add("01/04/2016,1330,115.34,115.75,115.3,115.75,6600");
        dataLIST.Add("01/04/2016,1400,115.75,115.97,115.44,115.87,5000");
        dataLIST.Add("01/04/2016,1430,115.87,115.87,115.4,115.66,9800");
        dataLIST.Add("01/04/2016,1500,115.61,115.66,115.27,115.46,12800");
        dataLIST.Add("01/04/2016,1530,115.46,116.57,115.39,116.57,29200");
        dataLIST.Add("01/05/2016,0930,116.39,118.01,116.39,116.99,10100");
        dataLIST.Add("01/05/2016,1000,117.09,117.48,116.44,116.5,3400");
        dataLIST.Add("01/05/2016,1030,116.5,117.16,116.46,117.08,2900");
        dataLIST.Add("01/05/2016,1100,117.08,117.08,115.99,116.17,3700");
        dataLIST.Add("01/05/2016,1130,116.17,116.66,116.17,116.37,2100");
        dataLIST.Add("01/05/2016,1200,116.3,116.35,115.68,115.91,3800");
        dataLIST.Add("01/05/2016,1230,115.91,116.55,115.77,116.49,7600");
        dataLIST.Add("01/05/2016,1300,116.52,116.73,115.9,116.07,3500");
        dataLIST.Add("01/05/2016,1330,116.07,117.06,116.03,116.68,4000");
        dataLIST.Add("01/05/2016,1400,116.49,116.53,115.9,115.98,4300");
        dataLIST.Add("01/05/2016,1430,115.99,116.26,115.98,116.13,3600");
        dataLIST.Add("01/05/2016,1500,116.25,116.55,115.86,116.38,5300");
        dataLIST.Add("01/05/2016,1530,116.35,116.7,116.07,116.57,21900");
        dataLIST.Add("01/06/2016,0930,114.43,116.21,114.16,116.11,12700");
        dataLIST.Add("01/06/2016,1000,116.11,116.46,114.87,115.47,9100");
        dataLIST.Add("01/06/2016,1030,115.42,115.71,115.07,115.71,5900");
        dataLIST.Add("01/06/2016,1100,115.71,116.38,115.35,115.98,4200");
        dataLIST.Add("01/06/2016,1130,116.06,116.19,115.81,115.83,3300");
        dataLIST.Add("01/06/2016,1200,115.53,115.9,115.1,115.21,8200");
        dataLIST.Add("01/06/2016,1230,115.1,115.26,114.75,114.79,9200");
        dataLIST.Add("01/06/2016,1300,114.75,115.15,114.49,115.01,5200");
        dataLIST.Add("01/06/2016,1330,115.1,115.2,114.64,114.65,4400");
        dataLIST.Add("01/06/2016,1400,114.59,114.9,114.41,114.82,6300");
        dataLIST.Add("01/06/2016,1430,114.82,114.9,113.95,114.04,4300");
        dataLIST.Add("01/06/2016,1500,114.11,114.75,113.87,114.69,4700");
        dataLIST.Add("01/06/2016,1530,114.69,114.75,114.3,114.62,14400");
    
    
        List<String> allparams = new List<String>();
        List<String> allparams2 = new List<String>();
        for (int i = 0; i < dataLIST.Count; i++)
        {
            //01/04/2016,0930,2.34,2.34,2.34,2.34,100
            allparams = new List<String>(dataLIST[i].Split(','));
            if (allparams.Count == 7)
            {
                allparams2 = new List<String>(allparams[0].Split('/'));
                if (allparams2.Count == 3)
                {
                    DateTime date = new DateTime(Convert.ToInt32(allparams2[2]), Convert.ToInt32(allparams2[0]), Convert.ToInt32(allparams2[1]), Convert.ToInt32(allparams[1].Substring(0, 2)), Convert.ToInt32(allparams[1].Substring(2)), 1);
                    double thedate = date.ToOADate();
                    //string thedate = date.ToShortDateString();
    
                    double open = Convert.ToDouble(allparams[2]);
                    double high = Convert.ToDouble(allparams[3]);
                    double low = Convert.ToDouble(allparams[4]);
                    double close = Convert.ToDouble(allparams[5]);
    
                    //"High,Low,Open,Close"
                    chart1.Series[0].Points.AddXY(thedate, high, low, open, close);
                    chart1.Series[0]["PointWidth"] = "1";
    
                    if (open < close)
                    {
                        chart1.Series[0].Points[i].Color = Color.Green;
                    }
                    if (open > close)
                    {
                        chart1.Series[0].Points[i].Color = Color.Red;
                    }
                }
            }
        }
        chart1.ChartAreas[0].AxisX.IsStartedFromZero = false;
        chart1.ChartAreas[0].AxisY.IsStartedFromZero = false;
    }
    View Code

    The result:

    The date on the X-axis is continuous, however, the value of the corresponding Y-axis is empty.

    In order to eliminate the gap between data, you can modify

    double thedate = date.ToOADate();

    with

    string thedate = date.ToShortDateString();

    However, the result will look like this,

    This issue has not been resolved perfectly yet.

  • 相关阅读:
    hdu 3342 Legal or Not 拓排序
    hdu 1596 find the safest road Dijkstra
    hdu 1874 畅通工程续 Dijkstra
    poj 2676 sudoku dfs
    poj 2251 BFS
    poj Prime Path BFS
    poj 3278 BFS
    poj 2387 Dijkstra 模板
    poj 3083 DFS 和BFS
    poj 1062 昂贵的聘礼 dijkstra
  • 原文地址:https://www.cnblogs.com/jizhiqiliao/p/9953105.html
Copyright © 2011-2022 走看看