public override double[][] getData() { //////BOLL: MA(CLOSE, M); //////UB: BOLL + 2 * STD(CLOSE, M); //////LB: BOLL - 2 * STD(CLOSE, M); List <double> boll = new List <double>(); List <double> ub = new List <double>(); List <double> lb = new List <double>(); for (int i = 0; i < OrgData.Length; i++) { int M = _M; List <double> PastVal = null; if (i < M) { PastVal = OrgData.ToList <double>(); } else { PastVal = OrgData.ToList <double>().GetRange(OrgData.Length - M, M); } double std = ProbMath.CalculateStdDev(PastVal); double ma = PastVal.Average(); boll.Add(ma); ub.Add(ma + 2 * std); lb.Add(ma - 2 * std); } double[][] r = new double[3][]; r[0] = boll.ToArray(); r[1] = ub.ToArray(); r[2] = lb.ToArray(); _LastResult = r;//所有子类此方法内均需执行该语句 return(r); }