public static void SaveCCScoresToDb(DateTime nowDate, CandidateParameter cp, ParameterdCandidateStrategy pcs) { string tableName = string.Format("{0}_CCSCORE_{1}", cp.MainSymbol, cp.DealInfoLastMinutes / (7 * 24 * 12 * 5)); long nowTime = WekaUtils.GetTimeFromDate(nowDate); try { Feng.Data.DbHelper.Instance.ExecuteNonQuery(string.Format("SELECT TOP 1 * FROM {0} WHERE TIME = -1", tableName)); } catch (Exception) { string sqlCreate = string.Format(@"CREATE TABLE {0}( [Time] [bigint] NOT NULL, [scores] [varbinary](max) NOT NULL, [nda] [varbinary](max) NOT NULL, [nds] [varbinary](max) NOT NULL, CONSTRAINT [PK_{0}] PRIMARY KEY CLUSTERED ( [Time] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]", tableName); Feng.Data.DbHelper.Instance.ExecuteNonQuery(sqlCreate); } long[, ,] ndas = new long[Parameters.AllDealTypes.Length, cp.BatchTps.Length, cp.BatchSls.Length]; long[, ,] ndss = new long[Parameters.AllDealTypes.Length, cp.BatchTps.Length, cp.BatchSls.Length]; double[, ,] nowScores = new double[Parameters.AllDealTypes.Length, cp.BatchTps.Length, cp.BatchSls.Length]; pcs.IterateClassifierInfos((k, ii, jj, h) => { nowScores[k, ii, jj] = pcs.m_classifierInfoIdxs[k, ii, jj, h].Deals.NowScore; ndas[k, ii, jj] = pcs.m_classifierInfoIdxs[k, ii, jj, h].Deals.DealLastTimeAvg; ndss[k, ii, jj] = pcs.m_classifierInfoIdxs[k, ii, jj, h].Deals.DealLastTimeStd; }); string sql = string.Format("INSERT INTO [{0}] ([Time],[scores],[nda],[nds]) VALUES (@Time, @score, @nda, @nds)", tableName); var cmd = new System.Data.SqlClient.SqlCommand(sql); cmd.Parameters.AddWithValue("@Time", nowTime); cmd.Parameters.AddWithValue("@score", CCScoreData.SerializeScores(nowScores)); cmd.Parameters.AddWithValue("@nda", CCScoreData.SerializeScoreTimes(ndas)); cmd.Parameters.AddWithValue("@nds", CCScoreData.SerializeScoreTimes(ndss)); try { Feng.Data.DbHelper.Instance.ExecuteNonQuery(string.Format("DELETE FROM {0} WHERE TIME = '{1}'", tableName, WekaUtils.GetTimeFromDate(nowDate))); Feng.Data.DbHelper.Instance.ExecuteNonQuery(cmd); } catch (Exception) { } }
public List <CandidateClassifier> GetBestClassifierInfo(ParameterdCandidateStrategy parent) { double[] sum = new double[Parameters.AllDealTypes.Length]; double[] oscsum = new double[Parameters.AllDealTypes.Length]; for (int k = 0; k < Parameters.AllDealTypes.Length; ++k) { sum[k] = 0; oscsum[k] = 0; } parent.IterateClassifierInfos2((cc) => { sum[WekaUtils.GetDealTypeIdx(cc.DealType)] += cc.Deals.NowScore; }); int oscCnt = 0; parent.IterateClassifierInfos((k, i, j, h) => { if (TestParameters.EnablePerhourTrain) { if (h != parent.CurrentTestHour) { return(true); } } if (k > 0) { return(true); } if (parent.m_classifierInfoIdxs[0, i, j, h].Deals.NowScore <= 0 && parent.m_classifierInfoIdxs[1, i, j, h].Deals.NowScore <= 0) { oscsum[0] += parent.m_classifierInfoIdxs[0, i, j, h].Deals.NowScore; oscsum[1] += parent.m_classifierInfoIdxs[1, i, j, h].Deals.NowScore; oscCnt++; } return(true); }); //for (int k = 0; k < Parameters.AllDealTypes.Length; ++k) //{ // sum[k] -= oscsum[k]; //} //double oscsums = oscsum[0] + oscsum[1]; int selectedDeal = -1; if (sum[0] < sum[1] && sum[0] < 0) { selectedDeal = 0; } else if (sum[1] < sum[0] && sum[1] < 0) { selectedDeal = 1; } if (selectedDeal == -1) { return(null); } if (oscCnt > 400) { return(null); } //selectedDeal = 1 - selectedDeal; List <CandidateClassifier> ret = new List <CandidateClassifier>(); parent.IterateClassifierInfos((k, i, j, h) => { if (k != selectedDeal) { return; } if (TestParameters.EnablePerhourTrain) { if (h != parent.CurrentTestHour) { return; } } switch (m_choiceType) { case 0: //if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore < 0)// && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) { ret.Add(parent.m_classifierInfoIdxs[k, i, j, h]); } break; //case 1: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore > 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) // { // ret.Add(parent.m_classifierInfoIdxs[k, i, j, h]); // } // break; //case 2: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore < 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) // { // ret.Add(parent.m_classifierInfoIdxs[k, i, j, h]); // } // break; //case 3: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore > 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore < 0) // { // ret.Add(parent.m_classifierInfoIdxs[k, i, j, h]); // } // break; case 4: if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore < 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) { ret.Add(parent.m_classifierInfoIdxs[1 - k, i, j, h]); } break; //case 5: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore > 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) // { // ret.Add(parent.m_classifierInfoIdxs[1 - k, i, j, h]); // } // break; //case 6: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore < 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) // { // ret.Add(parent.m_classifierInfoIdxs[1 - k, i, j, h]); // } // break; //case 7: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore > 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore < 0) // { // ret.Add(parent.m_classifierInfoIdxs[1 - k, i, j, h]); // } // break; } }); return(ret); }
public List<CandidateClassifier> GetBestClassifierInfo(ParameterdCandidateStrategy parent) { double[] sum = new double[Parameters.AllDealTypes.Length]; double[] oscsum = new double[Parameters.AllDealTypes.Length]; for (int k = 0; k < Parameters.AllDealTypes.Length; ++k) { sum[k] = 0; oscsum[k] = 0; } parent.IterateClassifierInfos2( (cc) => { sum[WekaUtils.GetDealTypeIdx(cc.DealType)] += cc.Deals.NowScore; }); int oscCnt = 0; parent.IterateClassifierInfos((k, i, j, h) => { if (TestParameters.EnablePerhourTrain) { if (h != parent.CurrentTestHour) return true; } if (k > 0) return true; if (parent.m_classifierInfoIdxs[0, i, j, h].Deals.NowScore <= 0 && parent.m_classifierInfoIdxs[1, i, j, h].Deals.NowScore <= 0) { oscsum[0] += parent.m_classifierInfoIdxs[0, i, j, h].Deals.NowScore; oscsum[1] += parent.m_classifierInfoIdxs[1, i, j, h].Deals.NowScore; oscCnt++; } return true; }); //for (int k = 0; k < Parameters.AllDealTypes.Length; ++k) //{ // sum[k] -= oscsum[k]; //} //double oscsums = oscsum[0] + oscsum[1]; int selectedDeal = -1; if (sum[0] < sum[1] && sum[0] < 0) { selectedDeal = 0; } else if (sum[1] < sum[0] && sum[1] < 0) { selectedDeal = 1; } if (selectedDeal == -1) return null; if (oscCnt > 400) return null; //selectedDeal = 1 - selectedDeal; List<CandidateClassifier> ret = new List<CandidateClassifier>(); parent.IterateClassifierInfos((k, i, j, h) => { if (k != selectedDeal) return; if (TestParameters.EnablePerhourTrain) { if (h != parent.CurrentTestHour) return; } switch (m_choiceType) { case 0: //if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore < 0)// && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) { ret.Add(parent.m_classifierInfoIdxs[k, i, j, h]); } break; //case 1: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore > 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) // { // ret.Add(parent.m_classifierInfoIdxs[k, i, j, h]); // } // break; //case 2: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore < 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) // { // ret.Add(parent.m_classifierInfoIdxs[k, i, j, h]); // } // break; //case 3: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore > 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore < 0) // { // ret.Add(parent.m_classifierInfoIdxs[k, i, j, h]); // } // break; case 4: if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore < 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) { ret.Add(parent.m_classifierInfoIdxs[1 - k, i, j, h]); } break; //case 5: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore > 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) // { // ret.Add(parent.m_classifierInfoIdxs[1 - k, i, j, h]); // } // break; //case 6: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore < 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore > 0) // { // ret.Add(parent.m_classifierInfoIdxs[1 - k, i, j, h]); // } // break; //case 7: // if (parent.m_classifierInfoIdxs[k, i, j, h].Deals.NowScore > 0 && parent.m_classifierInfoIdxs[1 - k, i, j, h].Deals.NowScore < 0) // { // ret.Add(parent.m_classifierInfoIdxs[1 - k, i, j, h]); // } // break; } }); return ret; }