コード例 #1
0
        private void FillChart()
        {
            List <CandleDate> listCandles = new List <CandleDate>();

            using (var reader = new StreamReader(Environment.CurrentDirectory + "\\wti_180.csv"))
            {
                while (!reader.EndOfStream)
                {
                    var line   = reader.ReadLine();
                    var values = line.Split(',');

                    CandleDate cd = new CandleDate();
                    cd.dt     = Convert.ToDateTime(values[0].Trim() + " " + values[1].Trim());
                    cd.open   = Convert.ToDouble(values[2].Trim());
                    cd.high   = Convert.ToDouble(values[3].Trim());
                    cd.low    = Convert.ToDouble(values[4].Trim());
                    cd.close  = Convert.ToDouble(values[5].Trim());
                    cd.volume = Convert.ToDouble(values[6].Trim());

                    listCandles.Add(cd);
                }
            }

            listCandles.Reverse();

            int blockSize = 100;

            chart.Series[0].Points.Clear();

            foreach (var dc in listCandles)
            {
                chart.Series[0].Points.AddXY(dc.dt, dc.high, dc.low, dc.open, dc.close);
            }
            var chartArea = chart.ChartAreas[chart.Series[0].ChartArea];

            chartArea.AxisX.Minimum = 0;
            chartArea.AxisX.Maximum = listCandles.Count;

            chartArea.CursorX.AutoScroll = true;

            chartArea.AxisX.ScaleView.Zoomable = true;
            chartArea.AxisX.ScaleView.SizeType = DateTimeIntervalType.Number;
            int position = listCandles.Count - blockSize;
            int size     = listCandles.Count;

            chartArea.AxisX.ScaleView.Zoom(position, size + 1);

            // disable zoom-reset button (only scrollbar's arrows are available)
            chartArea.AxisX.ScrollBar.ButtonStyle     = ScrollBarButtonStyles.All;
            chartArea.AxisX.ScaleView.SmallScrollSize = 10;

            chart_AxisViewChanged(chart, new ViewEventArgs(chartArea.AxisX, size + 1));
        }
コード例 #2
0
        private List <CandleDate> findCandles(CandleDate candle, int findMinute, int findCount)
        {
            List <CandleDate> sourcesList = null;
            List <CandleDate> findLists   = new List <CandleDate>();

            if (findMinute == 60)
            {
                sourcesList = listCandles60;
            }
            else if (findMinute == 120)
            {
                sourcesList = listCandles120;
            }
            else if (findMinute == 180)
            {
                sourcesList = listCandles180;
            }

            int idx = sourcesList.FindIndex(t => t.dt == candle.dt);

            if (idx > findCount)
            {
                int findIndex  = idx + 1;
                int findLength = idx + findCount;
                //for (int i = idx - findCount + 1; i <= idx; i++)
                //{
                //    findLists.Add(sourcesList[i]);
                //}

                for (int i = findIndex; i <= findLength; i++)
                {
                    if (sourcesList.Count > i)
                    {
                        findLists.Add(sourcesList[i]);
                    }
                }
            }

            return(findLists);
        }
コード例 #3
0
        private void btnLoad_Click(object sender, EventArgs e)
        {
            listCandles60.Clear();
            using (var reader = new StreamReader(Environment.CurrentDirectory + "\\wti_60.csv"))
            {
                while (!reader.EndOfStream)
                {
                    var line   = reader.ReadLine();
                    var values = line.Split(',');

                    CandleDate cd = new CandleDate();
                    cd.dt     = Convert.ToDateTime(values[0].Trim() + " " + values[1].Trim());
                    cd.open   = Convert.ToDouble(values[2].Trim());
                    cd.high   = Convert.ToDouble(values[3].Trim());
                    cd.low    = Convert.ToDouble(values[4].Trim());
                    cd.close  = Convert.ToDouble(values[5].Trim());
                    cd.volume = Convert.ToDouble(values[6].Trim());

                    listCandles60.Add(cd);
                }
            }
            listCandles120.Clear();
            using (var reader = new StreamReader(Environment.CurrentDirectory + "\\wti_120.csv"))
            {
                while (!reader.EndOfStream)
                {
                    var line   = reader.ReadLine();
                    var values = line.Split(',');

                    CandleDate cd = new CandleDate();
                    cd.dt     = Convert.ToDateTime(values[0].Trim() + " " + values[1].Trim());
                    cd.open   = Convert.ToDouble(values[2].Trim());
                    cd.high   = Convert.ToDouble(values[3].Trim());
                    cd.low    = Convert.ToDouble(values[4].Trim());
                    cd.close  = Convert.ToDouble(values[5].Trim());
                    cd.volume = Convert.ToDouble(values[6].Trim());

                    listCandles120.Add(cd);
                }
            }
            listCandles180.Clear();
            using (var reader = new StreamReader(Environment.CurrentDirectory + "\\wti_180.csv"))
            {
                while (!reader.EndOfStream)
                {
                    var line   = reader.ReadLine();
                    var values = line.Split(',');

                    CandleDate cd = new CandleDate();
                    cd.dt     = Convert.ToDateTime(values[0].Trim() + " " + values[1].Trim());
                    cd.open   = Convert.ToDouble(values[2].Trim());
                    cd.high   = Convert.ToDouble(values[3].Trim());
                    cd.low    = Convert.ToDouble(values[4].Trim());
                    cd.close  = Convert.ToDouble(values[5].Trim());
                    cd.volume = Convert.ToDouble(values[6].Trim());

                    listCandles180.Add(cd);
                }
            }

            listCandles60.Reverse();
            listCandles120.Reverse();
            listCandles180.Reverse();
        }