//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(); }
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; } } }); }
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); }
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(); }
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(); }
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(); })); }
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); } }
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(); }
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); } }); }
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(); }