//如果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); }
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); }
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"; }
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); }
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); * }*/ }