赵走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、动手实践:向量加法
28、指数移动平均线
资源编号:76415
人工智能
Numpy学习指南
热度:36
除了简单移动平均线,指数移动平均线(exponential moving average)也是一种流行的技术 指标。指数移动平均线使用的权重是指数衰减的。对历史上的数据点赋予的权重以指数速度减小, 但永远不会到达0。我们将在计算权重的过程中学习exp和linspace函数。
除了简单移动平均线,指数移动平均线(exponential moving average)也是一种流行的技术 指标。指数移动平均线使用的权重是指数衰减的。对历史上的数据点赋予的权重以指数速度减小, 但永远不会到达0。我们将在计算权重的过程中学习exp和linspace函数。 ### 动手实践:计算指数移动平均线 给定一个数组,exp函数可以计算出每个数组元素的指数。例如,看下面的代码: ``` import numpy as np import sys from matplotlib.pyplot import plot, show x = np.arange(5) print("Exp", np.exp(x)) ``` 输出结果如下: ``` Exp [ 1. 2.71828183 7.3890561 20.08553692 54.59815003] ``` linspace函数需要一个起始值和一个终止值参数,以及可选的元素个数的参数,它将返回 一个元素值在指定的范围内均匀分布的数组。如下所示: ``` print('Linspace', np.linspace(-1, 0, 5)) ``` 输出结果如下: ``` Linspace [-1. -0.75 -0.5 -0.25 0. ] ``` 下面我们来对示例数据计算指数移动平均线。 * (1) 还是回到权重的计算——这次使用exp和linspace函数。 ``` # N=int(sys.argv[1]) N = 5 weights = np.exp(np.linspace(-1., 0., N)) ``` * (2) 对权重值做归一化处理。我们将用到ndarray对象的sum方法。 ``` weights /= weights.sum() print('Weights', weights) ``` 在N = 5时,我们得到的权重值如下: ``` Weights [0.11405072 0.14644403 0.18803785 0.24144538 0.31002201] ``` * (3) 接下来就很容易了,我们只需要使用在简单移动平均线一节中学习到的convolve函数即 可。同样,我们还是将结果绘制出来。 ``` c = np.loadtxt('data.csv', delimiter=',', usecols=(6,), unpack=True) ema = np.convolve(weights, c)[N - 1:-N + 1] t = np.arange(N - 1, len(c)) plot(t, c[N - 1:], lw=1.0) plot(t, ema, lw=2.0) show() ``` 我们再次得到了曼妙的折线图。与之前一样,相对比较平滑的粗线描绘的是指数移动平均线, 而锯齿状的细线描绘的是每天的收盘价。 ![](https://img.handsomemark.com/2020/03/08/15836751097728.jpg) ### 刚才做了些什么 我们对收盘价数据计算了指数移动平均线。首先,我们使用exp和linspace函数计算出指 数衰减的权重值。linspace函数返回的是一个元素值均匀分布的数组,随后我们计算出它们的 指数。为了将这些权重值归一化,我们调用了ndarray对象的sum方法。最后,我们再次应用了 在前面简单移动平均线一节中学习到的convolve函数,最终计算出指数移动平均线。