1 什么是时间序列

时间序列是一组按照时间发生先后顺序进行排列的数据点序列。通常一组时间序列的时间间隔为一恒定值(如1秒,5分钟,12小时,7天,1年),因此时间序列可以作为离散时间数据进行分析处理。

例如:某监控系统的折线图表,显示了请求次数和响应时间随时间的变化趋势

2 Pandas的时间类型

  • pd.to_datetime():转换成pandas的时间类型 Timestamp('2018-03-02 00:00:00')
# pd将时间数据转换成pandas时间类型
# 1、填入时间的字符串,格式有几种, "2018-01-01" ,”01/02/2018“
pd.to_datetime("01/02/2017")

如果我们传入的是多个时间点,那么会是什么样的?

3 Pandas的时间序列类型

  • 1 转换时间序列类型
from datetime import datetime
# 传入时间的列表
date1 = ["2017-01-01", "2017-02-01", "2017-03-01"]
pd.to_datetime(date1)# 或者
date2 = [datetime(2018, 3, 1), datetime(2018, 3, 2), datetime(2018, 3, 3), datetime(2018, 3, 4), datetime(2018, 3, 5)]
date2 = pd.to_datetime(date2)# 如果其中有空值
date3 = [datetime(2018, 3, 1), datetime(2018, 3, 2), np.nan, datetime(2018, 3, 4), datetime(2018, 3, 5)]
date3 = pd.to_datetime(date3)
# 结果会变成NaT类型
DatetimeIndex(['2018-03-01', '2018-03-02', 'NaT', '2018-03-04', '2018-03-05'], dtype='datetime64[ns]', freq=None)

2 Pandas的时间序列类型:DatetimeIndex

# DateTimeIndex
pd.to_datetime(date1)
DatetimeIndex(['2018-03-01', '2018-03-02', '2018-03-03', '2018-03-04','2018-03-05'],dtype='datetime64[ns]', freq=None)pd.to_datetime(date1).valuesarray(['2018-03-01T00:00:00.000000000', '2018-03-02T00:00:00.000000000','2018-03-03T00:00:00.000000000', '2018-03-04T00:00:00.000000000','2018-03-05T00:00:00.000000000'], dtype='datetime64[ns]')

我们也可以通过DatetimeIndex来转换

  • 3 通过pd.DatetimeIndex进行转换
pd.DatetimeIndex(date1)

知道了时间序列类型,我们就可以用这个当做索引,获取数据

4 Pandas的基础时间序列结构

# 最基础的pandas的时间序列结构,以时间为索引的Series序列结构
>>>series_date = pd.Series(3.0, index=date1)
返回:
2017-01-01    3.0
2017-02-01    3.0
2017-03-01    3.0
dtype: float64>>>pd.to_datetime(series_date)
2017-01-01   1970-01-01 00:00:00.000000003
2017-02-01   1970-01-01 00:00:00.000000003
2017-03-01   1970-01-01 00:00:00.000000003
dtype: datetime64[ns]>>>pd.DatetimeIndex(series_date)
DatetimeIndex(['1970-01-01 00:00:00.000000003','1970-01-01 00:00:00.000000003','1970-01-01 00:00:00.000000003'],dtype='datetime64[ns]', freq=None)

pandas时间序列series的index必须是DatetimeIndex

  • DatetimeIndex的属性

    • year,month,weekday,day,hour….
time.year
time.month
time.weekday

5 Pandas生成指定频率的时间序列

pandas.date_range(start=None, end=None, periods=None, freq='D', tz=None, normalize=False, name=None, closed=None, **kwargs)

Returna fixed frequency DatetimeIndex, with day (calendar) as the default frequency

start:开始时间

end:结束时间

periods:产生多长的序列

freq:频率 D,H,Q等

tz:时区

# 生成指定的时间序列
# 1、生成2017-01-02~2017-12-30,生成频率为1天, 不跳过周六周日
pd.date_range("2017-01-02", "2017-12-30", freq="D")# 2、生成2017-01-02~2017-12-30,生成频率为1天, 跳过周六周日, 能够用在金融的数据,日线的数据
pd.date_range("2017-01-02", "2017-12-30", freq="B")# 3、只知道开始时间日期,我也知道总共天数多少,生成序列, 从"2016-01-01", 共504天,跳过周末
pd.date_range("2016-01-01", periods=504, freq="B")# 4、生成按照小时排列的时间序列数据
pd.date_range("2017-01-02", "2017-12-30", freq='H')# 5、按照3H去进行生成
pd.date_range("2017-01-02", "2017-12-30", freq='3H')# 6、按照1H30分钟去进行生成时间序列
pd.date_range("2017-01-02", "2017-12-30", freq='1H30min')# 7、按照每月最后一天
pd.date_range("2017-01-02", "2017-12-30", freq='BM')# 8、按照每个月的第几个星期几
pd.date_range("2017-01-02", "2017-12-30", freq='WOM-3FRI')

6 什么是时间序列分析

对于时间序列类型,有特有的分析方法。同样股票本身也是一种时间序列类型,我们就以股票的数据来进行时间序列的分析

时间序列分析( time series analysis)方法,强调的是通过对一个区域进行一定时间段内的连续观察计算,提取相关特征,并分析其变化过程。

时间序列分析主要有确定性变化分析

确定性变化分析:移动平均法, 移动方差和标准差、移动相关系数

7 移动平均法

1 移动窗口

主要用在时间序列的数组变换, 不同作用的函数将它们统称为移动窗口函数

2 移动平均线

那么会有各种观察窗口的方法,其中最常用的就是移动平均法

  • 移动平均线(Moving Average)简称均线, 将某一段时间的收盘价之和除以该周期

3 移动平均线的分类

移动平均线依计算周期分为短期(5天)、中期(20天)和长期(60天、120天),移动平均线没有固定的界限

移动平均线依据算法分为算数、加权法和指数移动平均线

注:不同的移动平均线方法不一样

1)简单移动平均线

简单移动平均线(SMA),又称“算数移动平均线”,是指特定期间的收盘价进行平均化。

比如说,5日的均线SMA=(C1+ C2 + C3 + C4 + C5) / 5

例子:

案例:对股票数据进行移动平均计算

拿到股票数据,画出K线图

# 拿到股票K线数据
stock_day = pd.read_csv("./stock_day/stock_day.csv")
stock_day = stock_day.sort_index()
stock_day.index = pd.to_datetime(stock_day.index)
stock_day['date'] = date2num(stock_day.index)
arr = stock_day[['date', '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')
axes.xaxis_date()
plt.show()

2)计算移动平均线

pandas.rolling_mean(arg, window, min_periods=None, freq=None, center=False, how=None, **kwargs) Moving mean.

Parameters:

arg : Series, DataFrame

window : 计算周期

# 直接对每天的收盘价进行求平均值, 简单移动平局线(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()

3)加权移动平均线 (WMA)

加权移动平均线 (WMA)将过去某特定时间内的价格取其平均值,它的比重以平均线的长度设定,愈近期的收市价,对市况影响愈重要。

正因加权移动平均线强调将愈近期的价格比重提升,故此当市况倒退时,加权移动平均线比起其它平均线更容易预测价格波动。但是我们还是不会轻易使用加权,应为他的比重过大!!!!

4)指数平滑移动平均线(EWMA)

是因应移动平均线被视为落后指标的缺失而发展出来的,为解决一旦价格已脱离均线差值扩大,而平均线未能立即反应,EWMA可以减少类似缺点。

总结:

pd.ewma(com=None, span=one)

  • 指数平均线
  • span:时间间隔
# 画出指数平滑移动平均线
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()

8 移动方差和标准差

  • 方差和标准差:反应某一时期的序列的稳定性

# 求出指定窗口大小的收盘价标准差和方差
pd.rolling_var(stock_day['close'][:200], window=10).plot()
pd.rolling_std(stock_day['close'][:200], window=10).plot()

9 各项指标数据两两关联散点图

  • pd.scatter_matrix(frame, figsize=None)

    • frame:DataFrame
frame = stock_day[['open','volume', 'ma20', 'p_change', 'turnover']]
pd.scatter_matrix(frame, figsize=(20, 8))

从中我们可以简单看到成交量(volume)和换手率(turnover)有非常明显的线性关系,因为换手率的定义就是:成交量除以发行总股数。

通过一些图或者相关性分析可以找到强相关的一些指标,在机器学习、量化中会详细介绍

相关系数:后面会介绍,目前我们只需知道他是反应两个序列之间的关系即可

10 案例:移动平均线数据本地保存

ma_list = [5, 20 ,60]
for ma in ma_list:stock_day['MA' + str(ma)] = pd.rolling_mean(stock_day.close, window=ma)
for ma in ma_list:stock_day['EMA' + str(ma)] = pd.ewma(stock_day.close, span=ma)data.to_csv("EWMA.csv")

11 移动平均线的作用

移动平均线经常会作为技术分析的基础理论,从中衍生出各种技术指标策略。后面将会介绍简单的基于均线的策略。

【转】股票时间序列数据处理与移动平均线相关推荐

  1. 股票移动平均线matlab,股票的移动平均线 (图文)

    股票的移动平均线 [泸指]股票的移动平均线 移动平均线是个强大的工具,能够更清晰地展示一系列无规律的数值变化 (比如股市波动).此外,泸指移动平均线还可别除任何周期性变化(正常的季节性温度变化)的影响 ...

  2. 九、股票收盘价与滑动平均线MA

    股票K线图里面的MACD,和DIF,DEA,MSI,MA MACD称为指数平滑异同移动平均线是从双移动平均线发展而来的,由快的移动平均线减去慢的移动平均线, MACD的意义和双移动平均线基本相同 DI ...

  3. 股票——指数移动平均线

    指数移动平均线一般指指数平滑移动平均线 译指数平滑移动平均线,乃为因应移动平均线被视为落后指标的缺失而发展出来的,为解决一旦价格已脱离均线差值扩大,而平均线未能立即反应,EXPMA可以减少类似缺点. ...

  4. 股票移动平均线matlab,移动平均线(MA)

    移动平均线,是利用统计学上 moving average 的方式计算而得.短期的移动平均线可以取至3-5天,中期可取12天,长期取一个月,超长为两月以上.平均线可反映股价之或上升或下降趋势,且平均日数 ...

  5. php计算股票均线,移动平均线——Moving Average 平均线的计算公式

    在前一章节我们介绍了一些走蜡烛图技术的形态包括持续形态和反转形态等等.虽然蜡烛图已经成为目前交易中广泛使用的技术分析工具但是在实际应用中由于自身的一些缺点使得交易者判断买人卖出时机的准确度降低.蜡烛图 ...

  6. 股票——简单移动平均线

    简介: 简单移动平均线(Simple Moving Average,SMA),又称"算术移动平均线",是指对特定期间的收盘价进行简单平均化的意思.一般所提及之移动平均线即指简单移动 ...

  7. 移动平均线ma分析_使用动态移动平均线构建交互式库存量和价格分析图

    移动平均线ma分析 I decided to code out my own stock tracking chart despite a wide array of freely available ...

  8. python 移动平均线_Python中的移动平均线

    python 移动平均线 There are situations, particularly when dealing with real-time data, when a conventiona ...

  9. 量化投资常用技能——绘图篇 2:绘制移动平均线

    量化投资常用技能--绘图篇 2 前言 移动平均线 使用numpy库计算移动平均值 量化投资第三方库:abupy 欢迎大家关注我们 我们的抖音号:金融观察(JRGC8888) 前言 上一篇文章" ...

最新文章

  1. Numpy入门教程:03.数组操作
  2. 【综述】闲话模型压缩之网络剪枝(Network Pruning)
  3. Linux同步自己的配置,Linux学习心得之——Rsync同步配置
  4. 前端学习(1433):vue是什么
  5. 从源码看ConcurrentHashMap
  6. 容斥 - HDU 4135 Co-prime
  7. 递归求解斐波那契fib(10)一共调用了多少次fib()函数
  8. ubuntu下手动安装php-amqp模块教程
  9. 向上传递 java_Java向上转型向下转型
  10. python实现一款编译型语言_Java,Python谁是编译型语言,谁是解释型语
  11. html中div页面布局,前端入门篇(二):利用Div + CSS快速布局页面
  12. solidity 中的时间_智能合约语言 Solidity 教程系列7 - 以太单位及时间单位
  13. 使用VC6.0缺少Dll或头文件解决方法
  14. Vim插件合集 (打造你的专属炫酷IDE)
  15. 模模搭古城搭建学习笔记3:建筑篇
  16. java机票编程_携程预订机票后台java开发编程
  17. 常用的前端JavaScript方法封装
  18. 楷书书法规则_毛笔书法楷书的结构规则
  19. Kaldi-Timit 训练
  20. html鼠标悬停提示文字

热门文章

  1. Java二叉树后序遍历:递归与迭代
  2. HTML转pdf几种解决方案,java开发html转pdf 解决方案
  3. Texpadv1.9.6 (646)专业的 LaTeX的编辑器 支持 M1
  4. CCNA 考试心得总结
  5. VMware虚拟机连不上移动硬盘或USB
  6. 计算机excl知识题,计算机excel考试试题「附答案」
  7. 联想中国区Q3业绩超预期增长,智能化深耕已取得可观成果
  8. 金蝶shr入职、转正、离职单据反审批出错,改单据状态对应的表
  9. ITSM流程管理:如何有效实施
  10. svn文件图标不显示-解决方案