时间序列分析( time series analysis)方法,强调的是通过对一个区域进行一定时间段内的连续观察计算,提取相关特征,并分析其变化过程。
时间序列分析主要有确定性变化分析和随机性变化分析
主要用在时间序列的数组变换, 不同作用的函数将它们统称为移动窗口函数
那么会有各种观察窗口的方法,其中最常用的就是移动平均法
注:不同的移动平均线方法不一样
简单移动平均线(SMA),又称“算数移动平均线”,是指特定期间的收盘价进行平均化比如说,5日的均线SMA=(C1+ C2 + C3 + C4 + C5) / 5
例子:
案例:对股票数据进行移动平均计算
# 拿到股票K线数据
stock_day = pd.read_csv("./data/stock_day/stock_day.csv")
stock_day = stock_day.sort_index()
stock_day["index"] = [i for i in range(stock_day.shape[0])]
arr = stock_day[['index', 'open', 'close', 'high', 'low']]
values = arr.values[:200]
# 画出K线图
fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(20, 8), dpi=80)
candlestick_ochl(axes, values, width=0.2, colorup='r', colordown='g')
# 直接对每天的收盘价进行求平均值, 简单移动平局线(SMA) # 分别加上短期、中期、长期局均线 pd.rolling_mean(stock_day["close"][:200], window=5).plot() pd.rolling_mean(stock_day["close"][:200], window=10).plot() pd.rolling_mean(stock_day["close"][:200], window=20).plot() pd.rolling_mean(stock_day["close"][:200], window=30).plot() pd.rolling_mean(stock_day["close"][:200], window=60).plot() pd.rolling_mean(stock_day["close"][:200], window=120).plot()
加权移动平均线 (WMA)将过去某特定时间内的价格取其平均值,它的比重以平均线的长度设定,愈近期的收市价,对市况影响愈重要。
正因加权移动平均线强调将愈近期的价格比重提升,故此当市况倒退时,加权移动平均线比起其它平均线更容易预测价格波动。但是我们还是不会轻易使用加权,应为他的比重过大!!!!
是因应移动平均线被视为落后指标的缺失而发展出来的,为解决一旦价格已脱离均线差值扩大,而平均线未能立即反应,EWMA可以减少类似缺点。
总结:
# 画出指数平滑移动平均线
pd.ewma(stock_day['close'][:200], span=10).plot()
pd.ewma(stock_day['close'][:200], span=30).plot()
pd.ewma(stock_day['close'][:200], span=60).plot()
# 求出指定窗口大小的收盘价标准差和方差
pd.rolling_var(stock_day['close'][:200], window=10).plot()
pd.rolling_std(stock_day['close'][:200], window=10).plot()
# 显示两个序列之间的关系(相关系数)
pd.rolling_corr(stock_day["close"][:200], stock_day["volume"][:200], window=10).plot()
但是这种查看两个序列关系不太好,或者查看多个交易指标的关系显示?接下来我们来看看各指标之间的关系
frame = data[['open','volume', 'ma20', 'p_change', 'turnover']]
pd.scatter_matrix(frame, figsize=(20, 8))
从中我们可以简单看到成交量(volume)和换手率(turnover)有非常明显的线性关系,因为换手率的定义就是:成交量除以发行总股数。
通过一些图或者相关性分析可以找到强相关的一些指标,在机器学习、量化中会详细介绍 相关系数:后面会介绍,目前我们只需知道他是反应两个序列之间的关系即可
ma_list = [5, 20 ,60]
for ma in ma_list:
data['MA' + str(ma)] = pd.rolling_mean(data.close, ma)
for ma in ma_list:
data['EMA' + str(ma)] = pd.ewma(data.close, span=ma)
data.to_csv("EWMA.csv")
移动平均线经常会作为技术分析的基础理论,从中衍生出各种技术指标策略。后面将会介绍简单的基于均线的策略。
页面更新:2024-03-12
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号