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