赵走x博客
首页
书籍
软件
工具
古诗词
搜索
登录
29、布林带
28、指数移动平均线
27、简单移动平均线
26、真实波动幅度均值(ATR)
25、周汇总
24、日期分析
23、股票收益率
22、统计分析
21、取值范围:找到最大值和最小值
20、成交量加权平均价格(VWAP)
19、CSV 文件
18、文件读写
17、动手实践:数组的转换
16、数组的属性
15、数组的分割
14、数组的组合
13、动手实践:改变数组的维度
12、动手实践:多维数组的切片和索引
11、一维数组的索引和切片
10、动手实践:创建自定义数据类型
9、dtype 类的属性
8、自定义数据类型
7、字符编码
6、数据类型对象
5、NumPy 数据类型
4、选取数组元素
3、动手实践:创建多维数组
2、NumPy 数组对象
1、动手实践:向量加法
27、简单移动平均线
资源编号:76414
人工智能
Numpy学习指南
热度:43
简单移动平均线(simple moving average)通常用于分析时间序列上的数据。为了计算它, 我们需要定义一个N个周期的移动窗口,在我们的例子中即N个交易日。我们按照时间序列滑动 这个窗口,并计算窗口内数据的均值。
# 27、简单移动平均线 简单移动平均线(simple moving average)通常用于分析时间序列上的数据。为了计算它, 我们需要定义一个N个周期的移动窗口,在我们的例子中即N个交易日。我们按照时间序列滑动 这个窗口,并计算窗口内数据的均值。 ### 动手实践:计算简单移动平均线 移动平均线只需要少量的循环和均值函数即可计算得出, 但使用NumPy还有更优的选 择——convolve函数。简单移动平均线只不过是计算与等权重的指示函数的卷积,当然,也可 以是不等权重的。 >卷积是分析数学中一种重要的运算,定义为一个函数与经过翻转和平移的另 一个函数的乘积的积分。 按照如下步骤计算简单移动平均线。 * (1) 使用ones函数创建一个长度为N的元素均初始化为1的数组,然后对整个数组除以N,即 可得到权重。如下所示: ``` import numpy as np import sys from matplotlib.pyplot import show, plot # N=int(sys.argv[1]) N = 5 weights = np.ones(N) / N print('weights=', weights) ``` 在N = 5时,输出结果如下: ``` weights= [0.2 0.2 0.2 0.2 0.2] ``` * (2) 使用这些权重值,调用convolve函数: ``` c = np.loadtxt('data.csv', delimiter=',', usecols=(6,), unpack=True) sma = np.convolve(weights, c)[N - 1:-N + 1] ``` * (3) 我们从convolve函数返回的数组中,取出中间的长度为N的部分,即两者做卷积运算时完全重叠的区域 。下面的代码将创建 一个存储时间值的数组,并使用Matplotlib进行绘图。我们会在后续章节学习这个绘图库。 ``` t = np.arange(N - 1, len(c)) plot(t, c[N - 1:], lw=1.0) plot(t, sma, lw=2.0) show() ``` 在下图中,相对较平滑的粗线描绘的是5日移动平均线,而锯齿状的细线描绘的是每天的收 盘价。 ![](https://img.handsomemark.com/2020/03/08/15836743110189.jpg) ### 刚才做了些什么 我们计算出了收盘价数据的简单移动平均线。是的,你掌握了很重要的知识,那就是简单移 动平均线可以用信号处理技术求解——与1/N的权重进行卷积运算,N为移动平均窗口的大小。我 们还学习了ones函数的用法,即可以创建元素均为1的数组,以及convolve函数,计算一组数 据与指定权重的卷积。