Exemplo n.º 1
0
        //如果stockitem kpi被filter
        private bool isfilter(string rulename, StockRuleItem item)
        {
            if (dapanlist == null)
            {
                //初始化 得到该买卖法则filter的规则
                dapanlist = StockRuleSQL.GetDapanFilter(rulename);
            }
            string dapanstatus = StockDapan.GetDaPanScore(item.date);

            if (dapanlist.Contains(dapanstatus))
            {
                return(false);
            }

            if (filterlist == null)
            {
                //初始化 得到该买卖法则filter的规则
                filterlist = StockRuleSQL.GetRuleFilter(rulename);
            }
            int size = filterlist.Count;

            for (int i = 0; i < size; i++)
            {
                string[] s    = (string[])filterlist[i]; //s包含kpivalue, kpivalue
                string[] kpis = item.kpis.Split(StockApp.seperator);
                //判断当前是否符合filter规则
                //{"kpiname","kpiindex","kpivalue"}
                if (!kpis[Convert.ToInt16(s[1])].ToString().Equals(s[2]))
                {
                    return(false);
                }
            }
            return(true);
        }
Exemplo n.º 2
0
        private void dg_overview_DoubleClick(object sender, EventArgs e)
        {
            dg_detail.Rows.Clear();
            DataGridViewRow row      = this.dg_overview.Rows[this.dg_overview.SelectedCells[0].RowIndex];
            int             type     = Convert.ToInt16(row.Cells[0].Value);
            string          rulename = (string)row.Cells[1].Value;

            StockRuleItem[] items = null;

            if (Rule.contains(type))
            {
                items = StockRuleSQL.GetRuleBuyList(rulename, startdate, enddate, type);
            }
            else
            {
                items = StockRuleSQL.GetRuleSellList(rulename, startdate, enddate);
            }


            foreach (StockRuleItem s in items)
            {
                if (s.pregrade < (double)this.num_grade.Value / 100)
                {
                    continue;
                }
                dg_detail.Rows.Add(s.ToRowInfo());
            }
            ShowDetail(true);
        }
Exemplo n.º 3
0
        private void btn_sync_Click(object sender, EventArgs e)
        {
            db.RunSql("truncate table Rule_Buy");
            string sql = @"insert into Rule_Buy select * from Rule_Buy0";

            db.RunSql(sql);

            ArrayList list = new ArrayList();

            //移除filter
            foreach (Buy rule in GetAllBuy())
            {
                string          rulename = rule.ToString();
                StockRuleItem[] items    = StockRuleSQL.GetRuleBuy0List(rulename, StockApp.STOCK_START_DATE, StockApp.END_DATE);
                for (int i = 0; i < items.Length; i++)
                {
                    if (!isfilter(rulename, items[i]) && (items[i].type == Rule.STATUS_BUY || items[i].type == Rule.STATUS_BUY_PY))
                    {
                        list.Add("delete from Rule_Buy where type = '" + Rule.STATUS_BUY + "' and id = '" + items[i].id + "';");
                    }
                }
                dapanlist  = null;
                filterlist = null;
            }

            //移除sequence
            sql = @"select [TYPE], ID from
                (
                select ROW_NUMBER() OVER (PARTITION BY [type], rulename, [date] order by grade desc) AS SEQUENCE,* from rule_buy0 
                ) T1
                where ";
            if (this.chk_limited.Checked)
            {
                //sql += "T1.SEQUENCE > " + (StockApp.BUY_STOCK_NUM * 2) + " and ";
                sql += "T1.SEQUENCE > " + this.num_stock.Value + " and ";
            }
            else
            {
                //如果没有选中"Limit"的情况
                //保证SQL没有选出数据, 则不会被移除
                sql += "T1.SEQUENCE > " + StockApp.POSITIVE_INF + " and ";
            }
            sql += " [TYPE] > 0;";
            DataTable dt = db.GetTable(sql);

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow dr = dt.Rows[i];
                list.Add("delete from Rule_Buy where type = '" + dr["TYPE"] + "' and id = '" + dr["ID"] + "';");
            }
            db.RunSql(list);


            StockRuleSQL.SetAnalysis();
            MessageBox.Show("Rule Sync Done!");
            lbl_status.Text = "Sync Done";
        }
Exemplo n.º 4
0
        private void btn_exportAll_Click(object sender, EventArgs e)
        {
            int size = this.dg_overview.Rows.Count;

            dg_detail.Rows.Clear();
            DataGridViewRow row      = this.dg_overview.Rows[0];
            int             type     = Convert.ToInt16(row.Cells[0].Value);
            string          rulename = (string)row.Cells[1].Value;

            StockRuleItem[] items = null;

            if (Rule.contains(type))
            {
                items = StockRuleSQL.GetRuleBuyList(rulename, startdate, enddate, type);
            }
            else
            {
                items = StockRuleSQL.GetRuleSellList(rulename, startdate, enddate);
            }

            foreach (StockRuleItem s in items)
            {
                dg_detail.Rows.Add(s.ToRowInfo());
            }
            Util.ExportCSV(this.dg_detail, "StockRuleAll.csv", true);


            for (int i = 1; i < size; i++)
            {
                dg_detail.Rows.Clear();
                row = this.dg_overview.Rows[0];

                type     = Convert.ToInt16(row.Cells[0].Value);
                rulename = (string)row.Cells[1].Value;

                if (Rule.contains(type))
                {
                    items = StockRuleSQL.GetRuleBuyList(rulename, startdate, enddate, type);
                }
                else
                {
                    items = StockRuleSQL.GetRuleSellList(rulename, startdate, enddate);
                }
            }
            foreach (StockRuleItem s in items)
            {
                dg_detail.Rows.Add(s.ToRowInfo());
            }
            Util.ExportCSV(this.dg_detail, "StockRuleAll.csv", false);

            MessageBox.Show("done");



            ShowDetail(true);
        }
Exemplo n.º 5
0
        public void SyncList()
        {
            this.dg_overview.Rows.Clear();
            StockRuleItem[] items = null, items2 = null;

            int    selectedIndex = 0, selectedDaPan = 0;
            string selectedDaPanValue = "";

            if (cmb_kpi.SelectedIndex > 0)
            {
                selectedIndex = cmb_kpi.SelectedIndex;
            }
            if (cmb_dapan.SelectedIndex > 0)
            {
                selectedDaPan = cmb_dapan.SelectedIndex;
            }

            if (selectedDaPan > 0)
            {
                selectedDaPanValue = StockDapan.namelist[cmb_dapan.SelectedIndex - 1];
            }
            double minumum_grade = (double)this.num_grade.Value / 100;

            foreach (Buy rule in StockApp.listbuy)
            {
                items = StockRuleSQL.GetRuleBuyList(rule.ToString(), startdate, enddate, Rule.STATUS_BUY_ML);
                AddList(items, Rule.STATUS_BUY_ML, rule.ToString(), selectedDaPanValue, 0, 0, minumum_grade);

                items  = StockRuleSQL.GetRuleBuyList(rule.ToString(), startdate, enddate, Rule.STATUS_BUY);
                items2 = StockRuleSQL.GetRuleBuyList(rule.ToString(), startdate, enddate, Rule.STATUS_BUY_PY);
                if (selectedIndex > 0)
                {
                    AddList(items, Rule.STATUS_BUY, rule.ToString(), selectedDaPanValue, cmb_kpi.SelectedIndex, 0, minumum_grade);     //第SelectedIndex个KPI值为0的数据
                    AddList(items, Rule.STATUS_BUY, rule.ToString(), selectedDaPanValue, cmb_kpi.SelectedIndex, 1, minumum_grade);     //第SelectedIndex个KPI值为1的数据
                    AddList(items2, Rule.STATUS_BUY_PY, rule.ToString(), selectedDaPanValue, cmb_kpi.SelectedIndex, 0, minumum_grade); //第SelectedIndex个KPI值为0的数据
                    AddList(items2, Rule.STATUS_BUY_PY, rule.ToString(), selectedDaPanValue, cmb_kpi.SelectedIndex, 1, minumum_grade); //第SelectedIndex个KPI值为1的数据
                }
                else
                {
                    AddList(items, Rule.STATUS_BUY, rule.ToString(), selectedDaPanValue, 0, 0, minumum_grade);     //第一个0是大盘状态, 第0个KPI值为0
                    AddList(items2, Rule.STATUS_BUY_PY, rule.ToString(), selectedDaPanValue, 0, 0, minumum_grade); //第一个0是大盘状态, 第0个KPI值为0
                }
            }

            /*foreach (Sell rule in StockApp.listsell)
             * {
             *  items = StockRuleSQL.GetRuleSellList(rule.ToString(), startdate, enddate);
             *  AddList(items, -1, rule.ToString(), selectedDaPanValue, 0, 0, minumum_grade);
             * }*/
        }