Esempio n. 1
0
        //private int getRank(List<KeyValuePair<WisdomCandleData, double>> rankList, WisdomCandleData data)
        //{
        //    int rank = -1;
        //    for (int idx = 0; idx < rankList.Count; idx++)
        //    {
        //        if (rankList[idx].Key == data)
        //        {
        //            rank = ++idx;
        //            break;
        //        }
        //    }

        //    return rank;
        //}
        //private double getValue(List<KeyValuePair<WisdomCandleData, double>> rankList, WisdomCandleData data)
        //{
        //    double val = -1;
        //    for (int idx = 0; idx < rankList.Count; idx++)
        //    {
        //        if (rankList[idx].Key == data)
        //        {
        //            val =  rankList[idx].Value;
        //            break;
        //        }
        //    }

        //    return val;
        //}
        #endregion

        #region Control Event
        private void dgvList_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex < 0 || e.RowIndex < 0)
            {
                return;
            }

            WisdomCandleData data = dgvList.Rows[e.RowIndex].Tag as WisdomCandleData;

            selCandleData = data;

            tbSelectedInfo.Text =
                $"{data.ItemCode} [{Convert.ToDateTime(data.DTime).ToString("yyyy-MM-dd HH:mm")}] 시가 : {data.BasicPrice_Open} 고가 : {data.BasicPrice_High} 저가 : {data.BasicPrice_Low} 종가 : {data.BasicPrice_Close} Space : {data.SpaceEnergy.ToString("N7")} Time : {data.TimeEnergy.ToString("N7")} Energy : {data.TotalEnergy.ToString("N7")}";

            chart1.ClearChartLabel("1");
            chart1.ClearChartLabel("2");
            chart1.DisplayChartLabel(data, Color.Black, "1");

            chart2.ClearChartLabel("1");
            chart2.ClearChartLabel("2");
            chart2.DisplayChartLabel(data, Color.Black, "1");

            dgv.Rows.Clear();
            lbNoResult.Visible = false;

            btnSearch.PerformClick();

            chart1.DisplayView();
        }
Esempio n. 2
0
        private void setTDay(int rIdx, WisdomCandleData cData)
        {
            Task.Factory.StartNew(() =>
            {
                for (int i = 0; i < scList.Count; i++)
                {
                    var data = scList[i];

                    if (data.DTime == cData.DTime)
                    {
                        int j = i + 1;
                        if (j < scList.Count)
                        {
                            data = scList[j];
                            this.Invoke(new Action(() => {
                                if (data.close > cData.close)
                                {
                                    dgv.Rows[rIdx].Cells["tday1"].Value           = "▲";
                                    dgv.Rows[rIdx].Cells["tday1"].Style.ForeColor = Color.Red;
                                }
                                else if (data.close < cData.close)
                                {
                                    dgv.Rows[rIdx].Cells["tday1"].Value           = "▼";
                                    dgv.Rows[rIdx].Cells["tday1"].Style.ForeColor = Color.Blue;
                                }
                            }));
                        }
                        j = i + 2;
                        if (j < scList.Count)
                        {
                            data = scList[j];

                            this.Invoke(new Action(() => {
                                if (data.close > cData.close)
                                {
                                    dgv.Rows[rIdx].Cells["tday2"].Value           = "▲";
                                    dgv.Rows[rIdx].Cells["tday2"].Style.ForeColor = Color.Red;
                                }
                                else if (data.close < cData.close)
                                {
                                    dgv.Rows[rIdx].Cells["tday2"].Value           = "▼";
                                    dgv.Rows[rIdx].Cells["tday2"].Style.ForeColor = Color.Blue;
                                }
                            }));
                        }
                        break;
                    }
                }
            });
        }
Esempio n. 3
0
        private void dgv_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.ColumnIndex < 0 || e.RowIndex < 0)
            {
                return;
            }

            WisdomCandleData chooseData = dgv.Rows[e.RowIndex].Tag as WisdomCandleData;

            chart1.ClearChartLabel("2");
            chart1.DisplayChartLabel(chooseData, Color.Orange, "2");

            chart2.ClearChartLabel("2");
            chart2.DisplayChartLabel(chooseData, Color.Orange, "2");

            chart1.MoveView(chooseData);
        }
Esempio n. 4
0
        public void MoveView(WisdomCandleData data)
        {
            List <WisdomCandleData> viewLists = null;
            int maxDisplayIndex = 0;
            int minDisplayIndex = 0;

            foreach (var m in ChartData)
            {
                if (m == data)
                {
                    break;
                }
                maxDisplayIndex++;
            }
            int trackView        = trackBar.Value;
            int displayItemCount = DisplayPointCount * trackView;

            minDisplayIndex = (maxDisplayIndex - displayItemCount);
            if (minDisplayIndex < 0)
            {
                minDisplayIndex = 0;
            }

            viewLists = ChartData.GetRange(minDisplayIndex, displayItemCount);

            chart.ChartAreas[0].AxisX.Maximum = maxDisplayIndex + 7;
            chart.ChartAreas[0].AxisX.Minimum = minDisplayIndex - 1;

            double maxPrice = viewLists.Max(m => m.high);
            double minPrice = viewLists.Min(m => m.low);

            maxPrice = maxPrice + SpaceMaxMin;
            minPrice = minPrice - SpaceMaxMin;

            chart.ChartAreas[0].AxisY2.Maximum = maxPrice;
            chart.ChartAreas[0].AxisY2.Minimum = minPrice;

            chart.Update();
        }
Esempio n. 5
0
        public void DisplayChartLabel(WisdomCandleData data, Color color, string type, string title = "▼")
        {
            foreach (var p in chart.Series[0].Points)
            {
                if (p.Tag as WisdomCandleData == data)
                {
                    TextAnnotation a = new TextAnnotation();
                    a.Font                 = new Font("굴림", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
                    a.Text                 = title;
                    a.ForeColor            = color;
                    a.IsSizeAlwaysRelative = true;
                    a.AnchorAlignment      = ContentAlignment.TopCenter;
                    a.AnchorDataPoint      = p;
                    a.Tag           = type;
                    a.AnchorOffsetY = -5;
                    chart.Annotations.Add(a);

                    break;
                }
            }

            chart.Update();
        }
Esempio n. 6
0
        void loadSiseDataFromDaemon(TimeIntervalEnum timeInterval = TimeIntervalEnum.Day)
        {
            var sourceDatas = PPContext.Instance.ClientContext.GetCandleSourceDataOrderByAsc(
                itemCode
                , timeInterval);

            if (sourceDatas == null || sourceDatas.Count == 0)
            {
                return;
            }

            scList.Clear();
            this.Invoke(new Action(() =>
            {
                dgvList.Rows.Clear();

                dgv.Rows.Clear();
                lbNoResult.Visible = false;
            }));

            WisdomCandleData preData = null;

            for (int i = 0; i < sourceDatas.Count; i++)
            {
                var value = sourceDatas[i];

                WisdomCandleData data = new WisdomCandleData(
                    value.ItemCode,
                    Convert.ToDouble(value.OpenPrice),
                    Convert.ToDouble(value.HighPrice),
                    Convert.ToDouble(value.LowPrice),
                    Convert.ToDouble(value.ClosePrice),
                    Convert.ToDouble(value.Volume),
                    Convert.ToDateTime(value.DTime),
                    preData);
                preData = data;
                scList.Add(data);
            }
            if (scList.Count < 3)
            {
                return;
            }

            scList.RemoveAt(0);
            scList.RemoveAt(0);
            scList.RemoveAt(0);

            this.Invoke(new Action(() =>
            {
                for (int i = scList.Count - 1; i >= 0; i--)
                {
                    var data       = scList[i];
                    string title   = data.BasicPrice_Close.ToString("N2");
                    string date    = Convert.ToDateTime(data.DTime).ToString("yy.MM.dd HH:mm");
                    string tenergy = data.TimeEnergy.ToString("N7");
                    string senergy = data.SpaceEnergy.ToString("N7");

                    int index = dgvList.Rows.Add(date, title, senergy, tenergy);
                    dgvList.Rows[index].Tag = data;
                }

                dgvList.ClearSelection();
                lblCnt.Text = scList.Count.ToString("N0");

                Display();
            }));
        }
Esempio n. 7
0
        void loadSiseDataFromFile(string fileName)
        {
            try
            {
                string itemType     = string.Empty;
                string siseInterval = string.Empty;
                var    lines        = File.ReadLines(fileName, Encoding.Default).ToList();

                if (lines.Count == 0)
                {
                    return;
                }

                scList.Clear();
                {
                    string[] values = lines[0].Split("\t".ToCharArray());
                    if (values[0].StartsWith("["))
                    {
                        itemType     = values[0].Replace("[일시]", "");
                        siseInterval = values[1].Trim() == "시간" ? "분" : "일";
                    }
                }
                WisdomCandleData preData = null;
                for (int i = lines.Count - 1; i > 0; i--)
                {
                    var      line   = lines[i];
                    string[] values = line.Split("\t".ToCharArray());
                    if (siseInterval == "일")
                    {
                        WisdomCandleData data = new WisdomCandleData(
                            itemType,
                            Convert.ToDouble(values[1].Trim()),
                            Convert.ToDouble(values[2].Trim()),
                            Convert.ToDouble(values[3].Trim()),
                            Convert.ToDouble(values[4].Trim()),
                            Convert.ToDouble(values[7].Trim().Replace(",", "")),
                            Convert.ToDateTime(values[0].Trim()),
                            preData);
                        preData = data;
                        scList.Add(data);
                    }
                    else
                    {
                        WisdomCandleData data = new WisdomCandleData(
                            itemType,
                            Convert.ToDouble(values[2].Trim()),
                            Convert.ToDouble(values[3].Trim()),
                            Convert.ToDouble(values[4].Trim()),
                            Convert.ToDouble(values[5].Trim()),
                            Convert.ToDouble(values[8].Trim().Replace(",", "")),
                            Convert.ToDateTime(values[0].Trim() + " " + values[1].Trim()),
                            preData);
                        preData = data;
                        scList.Add(data);
                    }
                }

                if (scList.Count > 3)
                {
                    scList.RemoveAt(0);
                    scList.RemoveAt(0);
                    scList.RemoveAt(0);


                    this.Invoke(new Action(() =>
                    {
                        dgvList.Rows.Clear();

                        dgv.Rows.Clear();
                        lbNoResult.Visible = false;
                    }));

                    for (int i = scList.Count - 1; i >= 0; i--)
                    {
                        this.Invoke(new Action(() =>
                        {
                            var data = scList[i];

                            string title   = data.BasicPrice_Close.ToString("N2");
                            string date    = Convert.ToDateTime(data.DTime).ToString("yy.MM.dd HH:mm");
                            string tenergy = data.TimeEnergy.ToString("N7");
                            string senergy = data.SpaceEnergy.ToString("N7");

                            int index = dgvList.Rows.Add(date, title, senergy, tenergy);
                            dgvList.Rows[index].Tag = data;
                        }));
                    }

                    this.Invoke(new Action(() =>
                    {
                        dgvList.ClearSelection();
                        lblCnt.Text = scList.Count.ToString("N0");
                    }));

                    chart1.LoadData("CL", scList, Lib.Base.Enums.TimeIntervalEnum.Day);
                    chart2.LoadData("CL", scList, Lib.Base.Enums.TimeIntervalEnum.Day);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Esempio n. 8
0
        public override void View()
        {
            pnlScroll.Visible = IsAutoScrollX;
            if (ChartData == null)
            {
                return;
            }

            smartDataList.Clear();
            wisdomDataList.Clear();
            SmartCandleData  preSmartData  = null;
            WisdomCandleData preWisdomData = null;

            if (ChartDataSub == null)
            {
                for (int i = 0; i < ChartData.Count; i++)
                {
                    var cData = ChartData[i];

                    SmartCandleData smartData = new SmartCandleData(cData.ItemCode, cData.OpenPrice, cData.HighPrice, cData.LowPrice, cData.ClosePrice, cData.Volume, cData.DTime, preSmartData);

                    smartDataList.Add(smartData);

                    preSmartData = smartData;

                    WisdomCandleData wisdomData = new WisdomCandleData(cData.ItemCode, cData.OpenPrice, cData.HighPrice, cData.LowPrice, cData.ClosePrice, cData.Volume, cData.DTime, preWisdomData);

                    wisdomDataList.Add(wisdomData);

                    preWisdomData = wisdomData;
                }
            }
            else
            {
                for (int i = 0; i < ChartDataSub.Count; i++)
                {
                    var cData = ChartDataSub[i];

                    SmartCandleData smartData = new SmartCandleData(cData.ItemCode, cData.OpenPrice, cData.HighPrice, cData.LowPrice, cData.ClosePrice, cData.Volume, cData.DTime, preSmartData);

                    smartDataList.Add(smartData);

                    preSmartData = smartData;

                    WisdomCandleData wisdomData = new WisdomCandleData(cData.ItemCode, cData.OpenPrice, cData.HighPrice, cData.LowPrice, cData.ClosePrice, cData.Volume, cData.DTime, preWisdomData);

                    wisdomDataList.Add(wisdomData);

                    preWisdomData = wisdomData;
                }
            }

            double preVariancePrice  = 0;
            double preVariancePrice2 = 0;
            double preVariancePrice3 = 0;

            for (int i = 4; i < ChartData.Count; i++)
            {
                var    item     = ChartData[i];
                var    item2    = ChartDataSub[i];
                var    smart    = smartDataList[i];
                var    wisdom   = wisdomDataList[i];
                int    idx      = chart.Series[0].Points.AddXY(item.DTime, item.HighPrice, item.LowPrice, item.OpenPrice, item.ClosePrice);
                string diceChar = getDiceChar(item);
                chart.Series[0].Points[idx].Label = diceChar;
                if (diceChar == "◆")
                {
                    chart.Series[0].Points[idx].LabelForeColor = Color.Red;
                }

                //chart.Series[1].Points.AddXY(smart.DTime, smart.SpaceTotalChangeRate);
                chart.Series[1].Points.AddXY(smart.DTime, smart.Variance_ChartPrice2);
                chart.Series[2].Points.AddXY(wisdom.DTime, wisdom.Variance_ChartPrice);
                chart.Series[3].Points.AddXY(wisdom.DTime, smart.Variance_ChartPrice1);

                chart.Series[4].Points.AddXY(item2.DTime, item2.HighPrice, item2.LowPrice, item2.OpenPrice, item2.ClosePrice);

                chart.Series[5].Points.AddXY(item2.DTime, item2.T_MassAvg);
                chart.Series[6].Points.AddXY(item2.DTime, item2.T_QuantumAvg);

                chart.Series[1].Points[idx].Color = Color.Red;
                chart.Series[2].Points[idx].Color = Color.Blue;

                if (preVariancePrice < preVariancePrice2 && wisdom.Variance_ChartPrice < smart.Variance_ChartPrice2)
                {
                    chart.Series[1].Points[idx].LabelForeColor = Color.Red;
                    chart.Series[1].Points[idx].Label          = "◎";
                }
                else if (preVariancePrice > preVariancePrice2 && wisdom.Variance_ChartPrice > smart.Variance_ChartPrice2)
                {
                    chart.Series[1].Points[idx].LabelForeColor = Color.Blue;
                    chart.Series[1].Points[idx].Label          = "◎";
                }


                if (preVariancePrice3 < preVariancePrice2 && wisdom.Variance_ChartPrice < smart.Variance_ChartPrice1)
                {
                    chart.Series[3].Points[idx].LabelForeColor = Color.Coral;
                    chart.Series[3].Points[idx].Label          = "▲";
                }
                else if (preVariancePrice3 > preVariancePrice2 && wisdom.Variance_ChartPrice > smart.Variance_ChartPrice1)
                {
                    chart.Series[3].Points[idx].LabelForeColor = Color.Lime;
                    chart.Series[3].Points[idx].Label          = "▼";
                }

                preVariancePrice  = smart.Variance_ChartPrice2;
                preVariancePrice2 = wisdom.Variance_ChartPrice;
                preVariancePrice3 = smart.Variance_ChartPrice1;

                //if (preVariancePrice2 < wisdom.Variance_ChartPrice)
                //{
                //    chart.Series[2].Points[idx].Color = Color.Blue;
                //    chart.Series[2].Points[idx].MarkerColor = Color.Blue;
                //}
                //else if (preVariancePrice2 > wisdom.Variance_ChartPrice)
                //{
                //    chart.Series[2].Points[idx].Color = Color.Blue;
                //    chart.Series[2].Points[idx].MarkerColor = Color.Blue;
                //}
                //else
                //{
                //    chart.Series[2].Points[idx].Color = Color.Blue;
                //    chart.Series[2].Points[idx].MarkerColor = Color.Blue;
                //}


                var dataPoint = chart.Series[0].Points[idx];
                dataPoint.Tag = item;
            }
            //chart.Series[1].Enabled = false;
            chart.Series[4].Enabled = false;
            //double maxPrice = ChartData.Max(m => m.HighPrice);
            //double minPrice = ChartData.Min(m => m.LowPrice);
            //maxPrice = maxPrice + SpaceMaxMin;
            //minPrice = minPrice - SpaceMaxMin;
            //chart.ChartAreas[0].AxisY2.Maximum = maxPrice;
            //chart.ChartAreas[0].AxisY2.Minimum = minPrice;

            SetTrackBar();
            SetScrollBar();

            DisplayView();

            IsLoaded = true;

            base.View();
        }
Esempio n. 9
0
        private void btnSearchJongmok_Click(object sender, EventArgs e)
        {
            if (!isRunningJongmok)
            {
                isRunningJongmok = true;
            }
            else
            {
                isRunningJongmok = false;
                return;
            }

            Task.Factory.StartNew(() =>
            {
                foreach (DataGridViewRow row in dgv.Rows)
                {
                    if (!isRunningJongmok)
                    {
                        return;
                    }
                    string code = row.Cells[0].Value as string;

                    Task.Factory.StartNew(() =>
                    {
                        var sourceDatas = XingContext.Instance.ClientContext.GetJongmokSiseData(code, "2", "0", "20");
                        if (sourceDatas == null || sourceDatas.Count == 0)
                        {
                            return;
                        }
                        var averageDatas = PPUtils.GetBalancedAverageDatas(code, sourceDatas, 4);

                        List <SmartCandleData> smartDataList   = new List <SmartCandleData>();
                        List <WisdomCandleData> wisdomDataList = new List <WisdomCandleData>();
                        SmartCandleData preSmartData           = null;
                        WisdomCandleData preWisdomData         = null;
                        for (int i = 0; i < averageDatas.Count; i++)
                        {
                            var cData = averageDatas[i];
                            SmartCandleData smartData = new SmartCandleData(cData.ItemCode, cData.OpenPrice, cData.HighPrice, cData.LowPrice, cData.ClosePrice, cData.Volume, cData.DTime, preSmartData);
                            smartDataList.Add(smartData);
                            preSmartData = smartData;
                            WisdomCandleData wisdomData = new WisdomCandleData(cData.ItemCode, cData.OpenPrice, cData.HighPrice, cData.LowPrice, cData.ClosePrice, cData.Volume, cData.DTime, preWisdomData);
                            wisdomDataList.Add(wisdomData);
                            preWisdomData = wisdomData;
                        }

                        var sR0 = getSmartLine(0, smartDataList);
                        var sR1 = getSmartLine(1, smartDataList);
                        var sR2 = getSmartLine(2, smartDataList);
                        var sR3 = getSmartLine(3, smartDataList);

                        var swR4 = getSmartWisdomLine(4, smartDataList, wisdomDataList);
                        var swR3 = getSmartWisdomLine(3, smartDataList, wisdomDataList);
                        var swR2 = getSmartWisdomLine(2, smartDataList, wisdomDataList);
                        var swR1 = getSmartWisdomLine(1, smartDataList, wisdomDataList);
                        var swR0 = getSmartWisdomLine(0, smartDataList, wisdomDataList);

                        //this.Invoke(new Action(() => {
                        row.Cells["IS3"].Value           = sR3.Item1;
                        row.Cells["IS3"].Style.ForeColor = sR3.Item2;
                        row.Cells["IS2"].Value           = sR2.Item1;
                        row.Cells["IS2"].Style.ForeColor = sR2.Item2;
                        row.Cells["IS1"].Value           = sR1.Item1;
                        row.Cells["IS1"].Style.ForeColor = sR1.Item2;
                        row.Cells["IS0"].Value           = sR0.Item1;
                        row.Cells["IS0"].Style.ForeColor = sR0.Item2;

                        row.Cells["ISW4"].Value           = swR4.Item1;
                        row.Cells["ISW4"].Style.ForeColor = swR4.Item2;
                        row.Cells["ISW3"].Value           = swR3.Item1;
                        row.Cells["ISW3"].Style.ForeColor = swR3.Item2;
                        row.Cells["ISW2"].Value           = swR2.Item1;
                        row.Cells["ISW2"].Style.ForeColor = swR2.Item2;
                        row.Cells["ISW1"].Value           = swR1.Item1;
                        row.Cells["ISW1"].Style.ForeColor = swR1.Item2;
                        row.Cells["ISW0"].Value           = swR0.Item1;
                        row.Cells["ISW0"].Style.ForeColor = swR0.Item2;
                    });

                    System.Threading.Thread.Sleep(2000);
                }
            });
        }
Esempio n. 10
0
        public override void View()
        {
            pnlScroll.Visible = IsAutoScrollX;
            if (ChartData == null)
            {
                return;
            }

            resistanceList.Clear();
            supportList.Clear();
            resistanceAvgList.Clear();
            supportAvgList.Clear();

            pmForceList.Clear();

            PPUtils.SetRangeHighLowPrice(ChartData, 18);
            PPUtils.SetRangeHighLowPrice(ChartDataSub, 18);

            //resistanceList.Add(PPUtils.GetResistancePrice(pList, 3));
            //resistanceList.Add(PPUtils.GetResistancePrice(mList, 3));
            //supportList.Add(PPUtils.GetSupportPrice(pList, 3));
            //supportList.Add(PPUtils.GetSupportPrice(mList, 3));
            //resistanceAvgList.Add(PPUtils.GetResistancePrice(ChartDataSub, 3));
            //supportAvgList.Add(PPUtils.GetSupportPrice(ChartDataSub, 3));

            smartDataList.Clear();
            wisdomDataList.Clear();
            smartBDataList.Clear();
            wisdomBDataList.Clear();

            SmartCandleData  preSmartData  = null;
            WisdomCandleData preWisdomData = null;

            for (int i = 0; i < ChartDataSub.Count; i++)
            {
                var             cData     = ChartDataSub[i];
                SmartCandleData smartData = new SmartCandleData(cData.ItemCode, cData.OpenPrice, cData.HighPrice, cData.LowPrice, cData.ClosePrice, cData.Volume, cData.DTime, preSmartData);
                smartDataList.Add(smartData);
                preSmartData = smartData;
                WisdomCandleData wisdomData = new WisdomCandleData(cData.ItemCode, cData.OpenPrice, cData.HighPrice, cData.LowPrice, cData.ClosePrice, cData.Volume, cData.DTime, preWisdomData);
                wisdomDataList.Add(wisdomData);
                preWisdomData = wisdomData;
            }

            preSmartData  = null;
            preWisdomData = null;
            for (int i = 0; i < ChartDataSub2.Count; i++)
            {
                var             cData     = ChartDataSub2[i];
                SmartCandleData smartData = new SmartCandleData(cData.ItemCode, cData.OpenPrice, cData.HighPrice, cData.LowPrice, cData.ClosePrice, cData.Volume, cData.DTime, preSmartData);
                smartBDataList.Add(smartData);
                preSmartData = smartData;
                WisdomCandleData wisdomData = new WisdomCandleData(cData.ItemCode, cData.OpenPrice, cData.HighPrice, cData.LowPrice, cData.ClosePrice, cData.Volume, cData.DTime, preWisdomData);
                wisdomBDataList.Add(wisdomData);
                preWisdomData = wisdomData;
            }

            double preSPrice1 = 0;
            double preSPrice2 = 0;
            double preSPrice3 = 0;

            double nextSPrice1 = 0;
            double nextSPrice2 = 0;
            double nextSPrice3 = 0;

            double preMassAvg    = 0;
            double preQuantumAvg = 0;

            int uItemCount = 0;
            int dItemCount = 0;
            LimitedList <double> dList1 = new LimitedList <double>(5);
            LimitedList <double> dList2 = new LimitedList <double>(5);

            ThreeCandlePattern threePatttern = new ThreeCandlePattern();

            double pmForce    = 0;
            double prePMForce = 0;

            pmForceList.Add(0);
            pmForceList.Add(0);
            pmForceList.Add(0);
            pmForceList.Add(0);
            for (int i = 4; i < ChartData.Count; i++)
            {
                var item     = ChartData[i];
                var itemAvg  = ChartDataSub[i];
                var itemAvg2 = ChartDataSub2[i];
                var smart    = smartDataList[i];
                var wisdom   = wisdomDataList[i];
                var smartB   = smartBDataList[i];
                var wisdomB  = wisdomBDataList[i];

                dList1.Insert((smart.Variance_ChartPrice1 + smart.Variance_ChartPrice2 + smart.Variance_ChartPrice3) / 3.0);
                dList2.Insert(smart.Variance_ChartPrice3);
                if ((i + 1) < ChartData.Count)
                {
                    var nsmart = smartDataList[i + 1];
                    nextSPrice1 = nsmart.Variance_ChartPrice1;
                    nextSPrice2 = nsmart.Variance_ChartPrice2;
                    nextSPrice3 = nsmart.Variance_ChartPrice3;
                }
                else
                {
                    nextSPrice1 = 0;
                    nextSPrice2 = 0;
                    nextSPrice3 = 0;
                }

                int    idx      = chart.Series["candleBasic"].Points.AddXY(item.DTime, item.HighPrice, item.LowPrice, item.OpenPrice, item.ClosePrice);
                string diceChar = item.GetSpaceType(item);
                //string diceChar = getDiceChar(itemAvg);
                chart.Series["candleBasic"].Points[idx].Label = diceChar;

                //chart.Series["lineElectronForce1"].Points.AddXY(item.DTime, item.T_ElectronForceAvg);
                chart.Series["lineElectronForce1"].Points.AddXY(itemAvg.DTime, itemAvg.T_ElectronForceAvg);
                chart.Series["lineElectronForce2"].Points.AddXY(itemAvg.DTime, 0);

                if (item.VirtualData)
                {
                    SetDataPointColor(chart.Series["candleBasic"].Points[idx], Color.Black, Color.Transparent, Color.Black, 1);
                }

                if (diceChar == "★")
                {
                    chart.Series["candleBasic"].Points[idx].LabelForeColor = Color.Red;
                }

                chart.Series["lineMess"].Points.AddXY(itemAvg.DTime, itemAvg.T_MassAvg);
                chart.Series["lineQuantum"].Points.AddXY(itemAvg.DTime, itemAvg.T_QuantumAvg);

                chart.Series["lineMessHL"].Points.AddXY(itemAvg.DTime
                                                        , itemAvg.T_MassAvg + (Math.Abs(itemAvg.T_MassAvg - itemAvg.HighPrice) - Math.Abs(itemAvg.T_MassAvg - itemAvg.LowPrice)));

                chart.Series["lineCandleRangeH"].Points.AddXY(item.DTime, Math.Round(item.RangeHighPrice, RoundLength));
                chart.Series["lineCandleRangeL"].Points.AddXY(item.DTime, Math.Round(item.RangeLowPrice, RoundLength));

                chart.Series["candleAverage"].Points.AddXY(itemAvg.DTime, itemAvg.HighPrice, itemAvg.LowPrice, itemAvg.OpenPrice, itemAvg.ClosePrice);
                diceChar = itemAvg.GetSpaceType(itemAvg);
                chart.Series["candleAverage"].Points[idx].Label = diceChar;
                if (diceChar == "★")
                {
                    chart.Series["candleAverage"].Points[idx].LabelForeColor = Color.Red;
                }

                chart.Series["lineCandleAvgRangeH"].Points.AddXY(itemAvg.DTime, Math.Round(itemAvg.RangeHighPrice, RoundLength));
                chart.Series["lineCandleAvgRangeL"].Points.AddXY(itemAvg.DTime, Math.Round(itemAvg.RangeLowPrice, RoundLength));

                chart.Series["candleBAverage"].Points.AddXY(itemAvg2.DTime, itemAvg2.HighPrice, itemAvg2.LowPrice, itemAvg2.OpenPrice, itemAvg2.ClosePrice);

                chart.Series["lineSmartEnergy1"].Points.AddXY(smart.DTime, smart.Variance_ChartPrice1);
                chart.Series["lineSmartEnergy2"].Points.AddXY(smart.DTime, smart.Variance_ChartPrice2);
                chart.Series["lineSmartEnergy3"].Points.AddXY(smart.DTime, smart.Variance_ChartPrice3);

                chart.Series["lineSmartAvg1"].Points.AddXY(smart.DTime, Math.Round(dList1.Average(), RoundLength));
                chart.Series["lineSmartAvg2"].Points.AddXY(smart.DTime, Math.Round(dList2.Average(), RoundLength));

                chart.Series["lineSmartZero"].Points.AddXY(smart.DTime, 0);

                chart.Series["lineSmartBEnergy2"].Points.AddXY(smartB.DTime, smartB.Variance_ChartPrice2);
                chart.Series["lineWisdomBEnergy"].Points.AddXY(wisdomB.DTime, wisdomB.Variance_ChartPrice);

                var bitem = ChartData[i - 1];
                chart.Series["stackHL"].Points.AddXY(item.DTime, item.TotalLength);
                chart.Series["stackHL2"].Points.AddXY(item.DTime, (bitem.TotalLength - item.TotalLength) <= 0 ? 0 : (bitem.TotalLength - item.TotalLength));

                if (itemAvg.PlusMinusType == PlusMinusTypeEnum.양)
                {
                    pmForce += itemAvg.HeadLength;
                }
                else if (itemAvg.PlusMinusType == PlusMinusTypeEnum.음)
                {
                    pmForce -= itemAvg.LegLength;
                }
                //else
                //{
                //    if (itemAvg.PreCandleItem.PlusMinusType == PlusMinusTypeEnum.양)
                //        pmForce -= itemAvg.PreCandleItem.BodyLength;
                //    else if (itemAvg.PreCandleItem.PlusMinusType == PlusMinusTypeEnum.음)
                //        pmForce += itemAvg.PreCandleItem.BodyLength;
                //}

                chart.Series["linePlusMinusForce"].Points.AddXY(itemAvg.DTime, pmForce);
                chart.Series["linePlusMinusZero"].Points.AddXY(itemAvg.DTime, 0);
                if (pmForce > prePMForce)
                {
                    chart.Series["linePlusMinusForce"].Points[idx].Color = Color.Red;
                }
                else if (pmForce < prePMForce)
                {
                    chart.Series["linePlusMinusForce"].Points[idx].Color = Color.Blue;
                }
                else
                {
                    chart.Series["linePlusMinusForce"].Points[idx].Color = Color.Black;
                }

                pmForceList.Add(pmForce);
                prePMForce = pmForce;
                //if (SelectedPType == "국내지수")
                //{
                //    if (preSPrice1 > preSPrice2 && preSPrice2 > preSPrice3)
                //    {
                //        if (smart.Variance_ChartPrice1 > smart.Variance_ChartPrice2 && smart.Variance_ChartPrice2 > smart.Variance_ChartPrice3)
                //        {
                //            if (preSPrice3 < smart.Variance_ChartPrice3)
                //            {
                //                chart.Series["lineSmartEnergy3"].Points[idx].LabelForeColor = Color.Red;
                //                chart.Series["lineSmartEnergy3"].Points[idx].Label = "▲";
                //            }
                //        }
                //    }
                //    if (preSPrice1 < preSPrice2 && preSPrice2 < preSPrice3)
                //    {
                //        if (smart.Variance_ChartPrice1 < smart.Variance_ChartPrice2 && smart.Variance_ChartPrice2 < smart.Variance_ChartPrice3)
                //        {
                //            if (preSPrice3 > smart.Variance_ChartPrice3)
                //            {
                //                chart.Series["lineSmartEnergy3"].Points[idx].LabelForeColor = Color.Blue;
                //                chart.Series["lineSmartEnergy3"].Points[idx].Label = "▼";
                //            }
                //        }
                //    }
                //}

                //if (SelectedPType == "해외지수")
                //{
                //    if (preSPrice1 > preSPrice2 && preSPrice2 > preSPrice3)
                //    {
                //        if (smart.Variance_ChartPrice1 > smart.Variance_ChartPrice2 && smart.Variance_ChartPrice2 > smart.Variance_ChartPrice3)
                //        {
                //            if (preSPrice3 < smart.Variance_ChartPrice3)
                //            {
                //                chart.Series["lineSmartEnergy3"].Points[idx].LabelForeColor = Color.Red;
                //                chart.Series["lineSmartEnergy3"].Points[idx].Label = "▲";
                //            }
                //        }
                //    }
                //    if (preSPrice1 < preSPrice2 && preSPrice2 < preSPrice3)
                //    {
                //        if (smart.Variance_ChartPrice1 < smart.Variance_ChartPrice2 && smart.Variance_ChartPrice2 < smart.Variance_ChartPrice3)
                //        {
                //            if (preSPrice3 > smart.Variance_ChartPrice3)
                //            {
                //                chart.Series["lineSmartEnergy3"].Points[idx].LabelForeColor = Color.Blue;
                //                chart.Series["lineSmartEnergy3"].Points[idx].Label = "▼";
                //            }
                //        }
                //    }
                //}

                if (SelectedPType == "해외선물" || SelectedPType == "암호화폐")
                {
                    uItemCount++;
                    dItemCount++;
                    if (smart.Variance_ChartPrice3 < 0 && preSPrice3 >= smart.Variance_ChartPrice3 && (nextSPrice3 != 0 && nextSPrice3 >= smart.Variance_ChartPrice3))
                    {
                        bool isRange = true;
                        //if (TimeInterval == TimeIntervalEnum.Minute_30 && smart.Variance_ChartPrice3 <= -30) isRange = true;
                        //if (TimeInterval == TimeIntervalEnum.Hour_01 && smart.Variance_ChartPrice3 <= -50) isRange = true;
                        //if (TimeInterval == TimeIntervalEnum.Hour_02 && smart.Variance_ChartPrice3 <= -60) isRange = true;
                        //if (TimeInterval == TimeIntervalEnum.Hour_05 && smart.Variance_ChartPrice3 <= -70) isRange = true;
                        //if (TimeInterval == TimeIntervalEnum.Day && smart.Variance_ChartPrice3 <= -100) isRange = true;
                        //if (TimeInterval == TimeIntervalEnum.Week && smart.Variance_ChartPrice3 <= -300) isRange = true;

                        if (uItemCount >= 5 && isRange)
                        {
                            uItemCount = 0;
                            chart.Series["lineSmartEnergy3"].Points[idx].LabelForeColor = Color.Red;
                            chart.Series["lineSmartEnergy3"].Points[idx].Label          = "▲";
                        }
                    }
                    if (smart.Variance_ChartPrice3 > 0 && preSPrice3 <= smart.Variance_ChartPrice3 && (nextSPrice3 != 0 && nextSPrice3 <= smart.Variance_ChartPrice3))
                    {
                        bool isRange = true;
                        //if (TimeInterval == TimeIntervalEnum.Minute_30 && smart.Variance_ChartPrice3 >= 30) isRange = true;
                        //if (TimeInterval == TimeIntervalEnum.Hour_01 && smart.Variance_ChartPrice3 >= 50) isRange = true;
                        //if (TimeInterval == TimeIntervalEnum.Hour_02 && smart.Variance_ChartPrice3 >= 60) isRange = true;
                        //if (TimeInterval == TimeIntervalEnum.Hour_05 && smart.Variance_ChartPrice3 >= 70) isRange = true;
                        //if (TimeInterval == TimeIntervalEnum.Day && smart.Variance_ChartPrice3 >= 100) isRange = true;
                        //if (TimeInterval == TimeIntervalEnum.Week && smart.Variance_ChartPrice3 >= 300) isRange = true;

                        if (dItemCount >= 5 && isRange)
                        {
                            dItemCount = 0;
                            chart.Series["lineSmartEnergy3"].Points[idx].LabelForeColor = Color.Blue;
                            chart.Series["lineSmartEnergy3"].Points[idx].Label          = "▼";
                        }
                    }
                }

                //if (SelectedPType == "국내업종")
                //{
                //    if (preSPrice1 > preSPrice2 && preSPrice2 > preSPrice3)
                //    {
                //        if (smart.Variance_ChartPrice1 > smart.Variance_ChartPrice2 && smart.Variance_ChartPrice2 > smart.Variance_ChartPrice3)
                //        {
                //            if (preSPrice3 < smart.Variance_ChartPrice3)
                //            {
                //                chart.Series["lineSmartEnergy3"].Points[idx].LabelForeColor = Color.Red;
                //                chart.Series["lineSmartEnergy3"].Points[idx].Label = "▲";
                //            }
                //        }
                //    }
                //    if (preSPrice1 < preSPrice2 && preSPrice2 < preSPrice3)
                //    {
                //        if (smart.Variance_ChartPrice1 < smart.Variance_ChartPrice2 && smart.Variance_ChartPrice2 < smart.Variance_ChartPrice3)
                //        {
                //            if (preSPrice3 > smart.Variance_ChartPrice3)
                //            {
                //                chart.Series["lineSmartEnergy3"].Points[idx].LabelForeColor = Color.Blue;
                //                chart.Series["lineSmartEnergy3"].Points[idx].Label = "▼";
                //            }
                //        }
                //    }
                //}

                preSPrice1 = smart.Variance_ChartPrice1;
                preSPrice2 = smart.Variance_ChartPrice2;
                preSPrice3 = smart.Variance_ChartPrice3;

                preMassAvg    = itemAvg.T_MassAvg;
                preQuantumAvg = itemAvg.T_QuantumAvg;

                var dataPoint    = chart.Series["candleBasic"].Points[idx];
                var dataPointAvg = chart.Series["candleAverage"].Points[idx];
                dataPoint.Tag = item;

                if (item.PlusMinusType == PlusMinusTypeEnum.양 && item.YinAndYang == PlusMinusTypeEnum.양)
                {
                    SetDataPointColor(dataPoint, Color.Red, Color.Red, Color.Red, 2);
                }
                else if (item.PlusMinusType == PlusMinusTypeEnum.음 && item.YinAndYang == PlusMinusTypeEnum.양)
                {
                    SetDataPointColor(dataPoint, Color.Blue, Color.Blue, Color.Blue, 2);
                }

                else if (item.PlusMinusType == PlusMinusTypeEnum.양)
                {
                    SetDataPointColor(dataPoint, Color.Red, Color.Red, Color.White, 2);
                }
                else if (item.PlusMinusType == PlusMinusTypeEnum.음)
                {
                    SetDataPointColor(dataPoint, Color.Blue, Color.Blue, Color.White, 2);
                }

                else
                {
                    SetDataPointColor(dataPoint, Color.Black, Color.Black, Color.White, 2);
                }

                if (itemAvg.PlusMinusType == PlusMinusTypeEnum.양)
                {
                    SetDataPointColor(dataPointAvg, Color.Red, Color.Red, Color.White, 2);
                }
                else if (itemAvg.PlusMinusType == PlusMinusTypeEnum.음)
                {
                    SetDataPointColor(dataPointAvg, Color.Blue, Color.Blue, Color.White, 2);
                }
                else
                {
                    SetDataPointColor(dataPointAvg, Color.Black, Color.Black, Color.White, 2);
                }
            }
            SetTrackBar();
            SetScrollBar();
            DisplayView();
            //ViewPattern();
            IsLoaded = true;

            base.View();
        }