예제 #1
0
        private void MenuItem_LoadDB_Click(object sender, RoutedEventArgs e)
        {
            DataTable table = SQLiteHelper.GetDataTable(@"SELECT name FROM sqlite_master", new SQLiteParameter[0]);

            for (int i = 0; i < table.Rows.Count; i++)
            {
                string TableName = table.Rows[i][0].ToString();
                if (TableName.StartsWith("ix"))
                {
                    continue;
                }
                TableNameList.Add(new TableNameItem(TableName));
            }

            DataTable tables_info = SQLiteHelper.GetDataTable(@"SELECT * FROM tables_info", new SQLiteParameter[0]);

            for (int i = 0; i < tables_info.Columns.Count; i++)
            {
                string cName   = tables_info.Columns[i].ToString();
                string dateStr = tables_info.Rows[0][i].ToString();
                if (cName == "index")
                {
                    continue;
                }
                DateTime      d    = DateTime.ParseExact(dateStr, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture);
                TableNameItem item = new TableNameItem(cName);
                item.date = d;
                TableInfoList.Add(item);
            }

            foreach (TableNameItem info in TableInfoList)
            {
                string        key      = info.name.Substring(0, info.name.Length - 5);
                TableNameItem NameItem = TableNameList.Find(it => it.name == key || it.name == info.name);
                if (NameItem != null)
                {
                    NameItem.date = info.date;
                }
            }

            ListView_TableTree.ItemsSource = TableNameList;

            GVL.Init();
            List <ShowStockItem> showList = new List <ShowStockItem>();

            foreach (StockBasicMgr.StockBasicItem item in GVL.StockBasicMgr.GetStockBasic())
            {
                showList.Add(new ShowStockItem(item.ts_code, item.name));
            }
            ListView_StockList.ItemsSource = showList;
        }
예제 #2
0
            public double amount;       //	成交额 (千元)

            public DailyItem(string ts_code, string trade_date, string open, string high, string low, string close, string pre_close, string change, string pct_change, string vol, string amount)
            {
                this.ts_code    = ts_code;
                this.trade_date = GVL.StrToDt(trade_date);
                this.open       = Convert.ToDouble(open);
                this.high       = Convert.ToDouble(high);
                this.low        = Convert.ToDouble(low);
                this.close      = Convert.ToDouble(close);
                this.pre_close  = Convert.ToDouble(pre_close);
                this.change     = Convert.ToDouble(change);
                this.pct_change = Convert.ToDouble(pct_change);
                this.vol        = Convert.ToDouble(vol);
                this.amount     = Convert.ToDouble(amount);
            }
예제 #3
0
        private void Button_Do_DrawLine_Click(object sender, RoutedEventArgs e)
        {
            if (m_CurrentSelectItem == null)
            {
                return;
            }
            DateTime sTime = Convert.ToDateTime(DatePicker_Select_SDate.Text);
            DateTime eTime = Convert.ToDateTime(DatePicker_Select_EDate.Text);

            List <double> l1_values = new List <double>();
            List <double> l2_values = new List <double>();

            SeriesCollection.Clear();

            if (ComBox_Line1.Text == Line_Names_1[0])
            {
                List <DailyMgr.DailyItem> daily_list = GVL.DailyMgr.GetDaily(m_CurrentSelectItem.ts_code, sTime, eTime);
                if (daily_list != null)
                {
                    foreach (DailyMgr.DailyItem item in daily_list)
                    {
                        l1_values.Add(item.close);
                    }
                }
            }

            if (ComBox_Line2.Text == Line_Names_2[0])
            {
                List <DailyMgr.DailyItem> daily_list = GVL.DailyMgr.GetDaily(m_CurrentSelectItem.ts_code, sTime, eTime);
                if (daily_list != null)
                {
                    foreach (DailyMgr.DailyItem item in daily_list)
                    {
                        l2_values.Add(item.vol);
                    }
                }
            }
            else if (ComBox_Line2.Text == Line_Names_2[1])
            {
                List <DailyBasicMgr.DailyBasicItem> dailybasic_list = GVL.DailyBasicMgr.GetDailyBasic(m_CurrentSelectItem.ts_code, sTime, eTime);
                if (dailybasic_list != null)
                {
                    foreach (DailyBasicMgr.DailyBasicItem item in dailybasic_list)
                    {
                        l2_values.Add(item.turnover_rate_f);
                    }
                }
            }
            else if (ComBox_Line2.Text == Line_Names_2[2])
            {
                List <DailyBasicMgr.DailyBasicItem> dailybasic_list = GVL.DailyBasicMgr.GetDailyBasic(m_CurrentSelectItem.ts_code, sTime, eTime);
                if (dailybasic_list != null)
                {
                    DailyBasicMgr.DailyBasicItem last_item = null;
                    if (dailybasic_list.Count < 2)
                    {
                        return;
                    }
                    for (int i = 0; i < dailybasic_list.Count; i++)
                    {
                        DailyBasicMgr.DailyBasicItem item = dailybasic_list[i];
                        if (i == 0)
                        {
                            last_item = item;
                            l2_values.Add(0);
                        }
                        else
                        {
                            l2_values.Add((item.turnover_rate_f - last_item.turnover_rate_f) / last_item.turnover_rate_f);
                            last_item = item;
                        }
                    }
                }
            }
            else if (ComBox_Line2.Text == Line_Names_2[3])
            {
                List <MoneyFlowMgr.MoneyFlowItem> MoneyFlowList = GVL.MoneyFlowMgr.GetMoneyFlow(m_CurrentSelectItem.ts_code, sTime, eTime);
                if (MoneyFlowList != null)
                {
                    foreach (MoneyFlowMgr.MoneyFlowItem item in MoneyFlowList)
                    {
                        l2_values.Add(item.buy_elg_vol + item.buy_lg_vol);
                    }
                }
            }
            else if (ComBox_Line2.Text == Line_Names_2[4])
            {
                List <MoneyFlowMgr.MoneyFlowItem> MoneyFlowList = GVL.MoneyFlowMgr.GetMoneyFlow(m_CurrentSelectItem.ts_code, sTime, eTime);
                if (MoneyFlowList != null)
                {
                    foreach (MoneyFlowMgr.MoneyFlowItem item in MoneyFlowList)
                    {
                        l2_values.Add(item.buy_elg_vol + item.buy_lg_vol - item.sell_elg_vol - item.sell_lg_vol);
                    }
                }
            }

            {
                //l1_values.Clear();
                //l2_values.Clear();
                //for(int i = 1; i < 13; i++)
                //{
                //    l1_values.Add(i);
                //    l2_values.Add(i);
                //}
                LineSeries l1 = new LineSeries();
                l1.Values = new ChartValues <double> (l1_values);
                LineSeries l2 = new LineSeries();
                l2.Values    = new ChartValues <double> (l2_values);
                l2.ScalesYAt = 1;
                SeriesCollection.Add(l1);
                SeriesCollection.Add(l2);
                MessageBox.Show("相关度:" + GVL.P_relation(l1_values, l2_values));
            }
        }
예제 #4
0
        private void Button_Do_Click(object sender, RoutedEventArgs e)
        {
            List <string> id_list = new List <string>();
            DataTable     tables_info_concept_info = SQLiteHelper.GetDataTable(@"SELECT code FROM concept_info", new SQLiteParameter[0]);

            for (int i = 0; i < tables_info_concept_info.Rows.Count; i++)
            {
                id_list.Add(tables_info_concept_info.Rows[i][0].ToString());
            }

            DateTime sDate    = Convert.ToDateTime(DatePicker_sDate.Text);
            string   sDateStr = sDate.ToString("yyyyMMdd");

            List <ConceptFormItem>    m_items    = new List <ConceptFormItem>();
            List <DailyMgr.DailyItem> daily_list = GVL.DailyMgr.GetDaily(sDate, sDate);

            string base_concept_name = null;

            if (ComboBox_ConceptList.SelectedIndex > -1)
            {
                base_concept_name = ComboBox_ConceptList.SelectedItem as string;
            }
            foreach (string id in id_list)
            {
                List <ConceptInfoMgr.ConceptInfoItem> subList = GVL.ConceptInfoMgr.GetConceptInfo().FindAll(it => it.code == id);
                double        tNum            = subList.Count;
                double        ac_tNum         = tNum;
                string        cName           = "";
                double        HpNum           = 0;
                double        MeanPNum        = 0;
                List <double> pct_change_list = new List <double>();
                for (int i = 0; i < tNum; i++)
                {
                    cName = subList[i].concept_name;
                    string             ts_code    = subList[i].ts_code;
                    DailyMgr.DailyItem daily_item = daily_list.Find(it => it.ts_code == ts_code);
                    if (daily_item != null)
                    {
                        double pct_change = daily_item.pct_change;
                        if (pct_change > 9.9)
                        {
                            HpNum += 1;
                        }
                        MeanPNum += pct_change;
                        pct_change_list.Add(pct_change);
                    }
                    else
                    {
                        ac_tNum -= 1;
                    }
                }
                MeanPNum = MeanPNum / ac_tNum;
                double MidPValue    = GVL.FindMidValue(pct_change_list);
                double relationship = 0;
                if (!string.IsNullOrEmpty(base_concept_name))
                {
                    relationship = GVL.ConceptInfoMgr.GetRelationShipEx(id, base_concept_name);
                }
                m_items.Add(new ConceptFormItem(cName, tNum, HpNum, MeanPNum, MidPValue, relationship));
            }

            m_items.Sort((a, b) => {
                if (a.MeanChange > b.MeanChange)
                {
                    return(-1);
                }
                else if (a.MeanChange == b.MeanChange)
                {
                    return(0);
                }
                else
                {
                    return(1);
                }
            });
            ListView_Main.ItemsSource = m_items;
        }
예제 #5
0
        private void Button_Do_Click(object sender, RoutedEventArgs e)
        {
            DateTime sDate   = Convert.ToDateTime(DatePicker_SDate.Text);
            DateTime eDate   = Convert.ToDateTime(DatePicker_EDate.Text);
            TimeSpan dTime   = eDate - sDate;
            int      DaysNum = dTime.Days + 1;

            if (DaysNum < 1)
            {
                MessageBox.Show("日期设置有问题");
                return;
            }
            ProgressBar_Progress.Value = 0;
            if (!String.IsNullOrEmpty(m_CurrentTsCode))
            {
                SeriesCollection.Clear();
                List <DailyMgr.DailyItem> dailyList = GVL.DailyMgr.GetDaily(m_CurrentTsCode, sDate, eDate);
                if (dailyList != null)
                {
                    List <double> ClosePriceList = new List <double>();
                    foreach (DailyMgr.DailyItem item in dailyList)
                    {
                        ClosePriceList.Add(item.close);
                    }

                    ChartValues <double> priceValue           = new ChartValues <double>(GVL.MakeUniqList(ClosePriceList));
                    LineSeries           closePriceLineSeries = new LineSeries();
                    closePriceLineSeries.Values = priceValue;
                    SeriesCollection.Add(closePriceLineSeries);
                    ProgressBar_Progress.Value = 50;

                    List <MoneyFlowMgr.MoneyFlowItem> moneyflowList = GVL.MoneyFlowMgr.GetMoneyFlow(m_CurrentTsCode, sDate, eDate);
                    if (moneyflowList != null)
                    {
                        List <double> valueList = new List <double>();
                        foreach (MoneyFlowMgr.MoneyFlowItem item in moneyflowList)
                        {
                            switch (ComboBox_MoneyType.SelectedIndex)
                            {
                            case 1:
                            {
                                valueList.Add(item.buy_elg_amount + item.buy_lg_amount); break;
                            }

                            case 2:
                            {
                                valueList.Add(item.buy_elg_amount + item.buy_lg_amount - item.sell_elg_amount - item.sell_lg_amount); break;
                            }

                            case 0:
                            default: valueList.Add(item.buy_elg_amount); break;
                            }
                        }

                        ChartValues <double> moneyValue      = new ChartValues <double>(GVL.MakeUniqList(valueList));
                        LineSeries           moneyLineSeries = new LineSeries();
                        moneyLineSeries.Values = moneyValue;
                        SeriesCollection.Add(moneyLineSeries);
                        ProgressBar_Progress.Value = 100;
                    }
                }
                else
                {
                    MessageBox.Show("没有当日股价数据数据");
                }
            }
            else
            {
                MessageBox.Show("未选择个股");
            }
        }