private void buttonAdd_Click(object sender, EventArgs e) { int nSel = listBoxBroker.SelectedIndex; if (nSel >= 0) { BrokerItem bi = provider.Brokers[nSel]; foreach (ServerItem si in bi.Server) { provider.Server.Add(si); } provider.SettingsChanged(); } }
void DrawSingleChart(BrokerItem bItem, Chart targetChart) { DateTime sTime = DateTime.Now, eTime = DateTime.Now; sTime = DailyDateList.First(); eTime = DailyDateList.Last(); targetChart.Titles["Price"].Text = String.Format("{0}-{1}", bItem.Name, bItem.Branch); targetChart.Visible = true; for (int j = 0; j < DailyDateList.Count(); j++) { foreach (var item in targetChart.Series) { if (item.Name == "Price") { continue; } item.Points.AddXY(j, 0); item.Points[j].XValue = DailyDateList[j].ToOADate(); if (item.Name == "均價") { item.Points[j].IsEmpty = true; } } } double initDay = DailyDateList[0].ToOADate(); Parallel.ForEach(db.DailySettlement.Where(o => o.stockId == tbStockId.Text && o.brokerName == bItem.Name && o.brokerBranch == bItem.Branch && o.receiveDate >= sTime && o.receiveDate <= eTime), dataItem => //foreach (var dataItem in db.DailySettlement.Where(o => o.stockId == tbStockId.Text && o.brokerName == bItem.Name && o.brokerBranch == bItem.Branch && o.receiveDate >= sTime && o.receiveDate <= eTime)) { int index_day = DailyDateList.IndexOf(dataItem.receiveDate); if (index_day < 0) { return; //break; } targetChart.Series["均價"].Points[index_day].IsEmpty = false; targetChart.Series["均價"].Points[index_day].YValues = new double[] { (double)dataItem.avgValue }; targetChart.Series["均價"].Points[index_day].ToolTip = string.Format("{0}\n均價:{1:f2}", dataItem.receiveDate.ToString("yyyy/MM/dd"), dataItem.avgValue); targetChart.Series["買入"].Points[index_day].YValues = new double[] { (double)dataItem.buyVolume }; targetChart.Series["買入"].Points[index_day].ToolTip = string.Format("{0}\n買入:{1:f2}", dataItem.receiveDate.ToString("yyyy/MM/dd"), dataItem.buyVolume); targetChart.Series["賣出"].Points[index_day].YValues = new double[] { (double)dataItem.sellVolume * -1 }; targetChart.Series["賣出"].Points[index_day].ToolTip = string.Format("{0}\n賣出:{1:f2}", dataItem.receiveDate.ToString("yyyy/MM/dd"), dataItem.sellVolume); }); double sum = 0; for (int j = 0; j < DailyDateList.Count(); j++) { double buyVolume = targetChart.Series["買入"].Points[j].YValues.First(); double sellVolume = targetChart.Series["賣出"].Points[j].YValues.First(); sum = sum + (buyVolume + sellVolume); targetChart.Series["合計"].Points[j].YValues = new double[] { sum }; targetChart.Series["合計"].Points[j].ToolTip = string.Format("{0}\n合計:{1:f2}", DailyDateList[j].ToString("yyyy/MM/dd"), sum); } }
void DrawSingleChart(BrokerItem bItem, Chart targetChart) { DateTime sTime = DateTime.Now, eTime = DateTime.Now; sTime = DailyDateList.First(); eTime = DailyDateList.Last(); targetChart.Titles["Price"].Text = String.Format("{0}-{1}", bItem.Name, bItem.Branch); targetChart.Visible = true; for (int j = 0; j < DailyDateList.Count(); j++) { foreach (var item in targetChart.Series) { if (item.Name == "Price") { continue; } item.Points.AddXY(j, 0); item.Points[j].XValue = DailyDateList[j].ToOADate(); if (item.Name == "均價") { item.Points[j].IsEmpty = true; } } } double initDay = DailyDateList[0].ToOADate(); Parallel.ForEach(db.DailySettlement.Where(o => o.stockId == tbStockId.Text && o.brokerName == bItem.Name && o.brokerBranch == bItem.Branch && o.receiveDate >= sTime && o.receiveDate <= eTime), dataItem => //foreach (var dataItem in db.DailySettlement.Where(o => o.stockId == tbStockId.Text && o.brokerName == bItem.Name && o.brokerBranch == bItem.Branch && o.receiveDate >= sTime && o.receiveDate <= eTime)) { int index_day = DailyDateList.IndexOf(dataItem.receiveDate); if (index_day < 0) { return; //break; } targetChart.Series["均價"].Points[index_day].IsEmpty = false; targetChart.Series["均價"].Points[index_day].YValues = new double[] { (double)dataItem.avgValue }; targetChart.Series["均價"].Points[index_day].ToolTip = string.Format("{0}\n均價:{1:f2}", dataItem.receiveDate.ToString("yyyy/MM/dd"), dataItem.avgValue); targetChart.Series["買入"].Points[index_day].YValues = new double[] { (double)dataItem.buyVolume }; targetChart.Series["買入"].Points[index_day].ToolTip = string.Format("{0}\n買入:{1:f2}", dataItem.receiveDate.ToString("yyyy/MM/dd"), dataItem.buyVolume); targetChart.Series["賣出"].Points[index_day].YValues = new double[] { (double)dataItem.sellVolume * -1 }; targetChart.Series["賣出"].Points[index_day].ToolTip = string.Format("{0}\n賣出:{1:f2}", dataItem.receiveDate.ToString("yyyy/MM/dd"), dataItem.sellVolume); }); double sum = 0; for (int j = 0; j < DailyDateList.Count(); j++) { double buyVolume = targetChart.Series["買入"].Points[j].YValues.First(); double sellVolume = targetChart.Series["賣出"].Points[j].YValues.First(); sum = sum + (buyVolume + sellVolume); targetChart.Series["合計"].Points[j].YValues = new double[] { sum }; targetChart.Series["合計"].Points[j].ToolTip = string.Format("{0}\n合計:{1:f2}", DailyDateList[j].ToString("yyyy/MM/dd"), sum); } }