统计学分析公式 MA移动平均线
算术移动平均线 所谓移动平均,首先是算术平均数,如1到10十个数字,其平均数便是5.5;而移动则意味着这十个数字的变动。假如第一组是1到10,第二组变动成2到11,第三组又变为3到12,那么,这三组平均数各不相同。而这些不同的平均数的集合,便统称为移动平均数 举例说明:某股连续十个交易日收盘价分别为:(单位:元) 8.15、 8.07、 8.84、 8.10、 8.40、 9.10、 9.20、 9.10、 8.95、 8.70 以五天短期均线为例: 第五天均值=(8.15+8.07+8.84+8.10+8.40)/5=8.31 第六天均值=(8.07+8.84+8.10+8.40+9.10)/5=8.50 第七天均值=(8.84+8.10+8.40+9.10+9.20)/5=8.73 第八天均值=(8.10+8.40+9.10+9.20+9.10)/5=8.78 第九天均值=(8.40+9.10+9.20+9.10+8.95)/5=8.95 第十天均值=(9.10+9.20+9.10+8.95+8.70)/5=9.01
算法代码实现
//统计学分析公式,指数平滑移动平均线 public decimal[] zhishupinghuayidongpingjunxian(decimal[] dec, int day) { if (day <= dec.Length) { decimal[] zs = new decimal[dec.Length ]; if (dec.Length > 0) { int d = 0; int js = 0; while (d < dec.Length ) { decimal he = 0; if (js == 0) { for (int i = 0; i < day; i++) { if ((i + d) <= dec.Length - 1) { he += dec[i + d]; } } try { zs[js] = (he / (decimal)day); } catch (Exception e) { string ssd = e.ToString(); } } else { zs[js] = (dec[d] * 1.00M) / (decimal)day + (zs[js - 1] * ((decimal)day - 1)) / (decimal)day; } ++d; js += 1; } } return zs; } else { return null; } }