예제 #1
0
        public DataTable getSystemStdDevList()
        {
            DataTable dt = new DataTable();

            dt.Columns.Add("Expect", typeof(string));
            dt.Columns.Add("StdDev", typeof(double));
            dt.Columns.Add("StdMa20", typeof(double));
            dt.Columns.Add("StdMa5", typeof(double));
            for (int i = 0; i < 10; i++)
            {
                string strCol = string.Format("{0}", (i + 1) % 10);
                dt.Columns.Add(strCol, typeof(double));
            }
            if (SystemStdDevList == null)
            {
                return(dt);
            }
            MA_del ma  = new MA_del(SystemStdDevList.Values.Select(p => p[10]).ToArray(), 20);
            MA_del ma5 = new MA_del(SystemStdDevList.Values.Select(p => p[10]).ToArray(), 5);

            double[] mavals = ma.LastValues[0];
            int      c      = 0;

            foreach (string key in SystemStdDevList.Keys)
            {
                //dt.Rows.Add(new object[] { key, });
                DataRow dr = dt.NewRow();
                dr[0] = key;
                List <double> list = SystemStdDevList[key];
                dr[1] = list[10];
                dr[2] = mavals[c];
                dr[3] = ma5.LastValues[0][c];
                for (int i = 0; i < 10; i++)
                {
                    string strCol = string.Format("{0}", (i + 1) % 10);
                    dr[strCol] = list[i];
                }
                dt.Rows.Add(dr);
                c++;
            }
            return(dt);
        }
예제 #2
0
        public override List <ChanceClass> getChances(BaseCollection sc, ExpectData ed)
        {
            List <ChanceClass> ret = new List <ChanceClass>();

            if (sc == null || sc.Table == null || sc.Table.Rows.Count < this.ReviewExpectCnt)
            {
                return(ret);
            }
            if (this.getAllStdDev() == null)
            {
                this.setAllStdDev(new Dictionary <string, List <double> >());
            }
            double        stdval = 0;
            List <double> list   = sc.getAllDistrStdDev(this.ReviewExpectCnt, this.InputMaxTimes);

            if (!this.getAllStdDev().ContainsKey(ed.Expect))
            {
                stdval = list[10];//最后一位
                this.getAllStdDev().Add(ed.Expect, list);
            }
            if (getAllStdDev().Count < 20)
            {
                return(ret);
            }
            MA_del ma20 = new MA_del(getAllStdDev().Values.Select(p => p[10]).ToArray(), 20);
            MA_del ma5  = new MA_del(getAllStdDev().Values.Select(p => p[10]).ToArray(), 5);

            if (!IsTracing)
            {
                //if (stdval > 0.2) return ret;
                if (ma20.IsDownCross())//下穿均线,开始跟踪
                {
                    IsTracing = true;
                }
                else
                {
                    return(ret);
                }
            }
            else
            {
                ////if (stdval > 0.2)
                ////{
                ////    IsTracing = false;
                ////    return ret;
                ////}
                if (ma5.IsUpCross())//上穿均线,停止跟踪
                {
                    IsTracing = false;
                    return(ret);
                }
            }
            strag_CommOldClass strag = new strag_CommOldClass();

            strag.BySer         = this.BySer;
            strag.ChipCount     = this.ChipCount;
            strag.InputMinTimes = this.InputMinTimes;
            List <ChanceClass>          tmp = strag.getChances(sc, ed);
            Dictionary <string, double> dic = new Dictionary <string, double>();

            for (int i = 0; i < 10; i++)
            {
                if (list[i] < stdval)//小于整体的才有效
                {
                    string strcol = string.Format("{0}", (i + 1) % 10);
                    dic.Add(strcol, list[i]);
                }
            }
            for (int i = 0; i < tmp.Count; i++)
            {
                if (dic.ContainsKey(tmp[i].GetCodeKey(this.BySer)))
                {
                    ret.Add(tmp[i]);
                }
            }
            return(ret);
        }