Python量化交易进阶讲堂:股票分笔数据跨周期处理

2020-04-0420:06:31后端程序开发Comments2,363 views字数 4183阅读模式

介绍分笔交易数据的获取和处理方法。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18083.html

首先使用tushare库get_tick_data()接口获取浙大网新2019-08-08的历史分笔数据,如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18083.html

df = ts.get_tick_data('600797',date='2019-08-08',src='tt')
print(df.head(10))
"""
       time  price  change  volume  amount type
0  09:25:05   7.89    0.09     385  303765   卖盘
1  09:30:03   7.90    0.01     591  466402   买盘
2  09:30:06   7.90    0.00     371  292885   卖盘
3  09:30:08   7.91    0.01      96   75837   买盘
4  09:30:12   7.92    0.01      43   34021   买盘
5  09:30:15   7.90   -0.02       1     790   卖盘
6  09:30:18   7.90    0.00      61   48143   买盘
7  09:30:21   7.91    0.01      15   11860   买盘
8  09:30:24   7.91    0.00       5    3955   买盘
9  09:30:27   7.90   -0.01      10    7900   卖盘
"""
复制代码

返回值中time时间、price成交价格、change价格变动、volume成交手、amount成交金额(元)、type买卖类型【买盘、卖盘、中性盘】。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18083.html

将分笔数据的行索引转换为时间序列,如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18083.html

df_tick.index = pd.to_datetime(df_tick.time)
df_tick.drop(axis=1, columns='time', inplace=True)
print(df_tick.head(10))
"""
                     price  change  volume  amount type
time                                                   
2019-08-10 09:25:05   7.89    0.09     385  303765   卖盘
2019-08-10 09:30:03   7.90    0.01     591  466402   买盘
2019-08-10 09:30:06   7.90    0.00     371  292885   卖盘
2019-08-10 09:30:08   7.91    0.01      96   75837   买盘
2019-08-10 09:30:12   7.92    0.01      43   34021   买盘
2019-08-10 09:30:15   7.90   -0.02       1     790   卖盘
2019-08-10 09:30:18   7.90    0.00      61   48143   买盘
2019-08-10 09:30:21   7.91    0.01      15   11860   买盘
2019-08-10 09:30:24   7.91    0.00       5    3955   买盘
2019-08-10 09:30:27   7.90   -0.01      10    7900   卖盘
"""
复制代码

Pandas中提供了resample()方法对时间序列进行重采样,此处将获取到的tick数据合成一分钟数据。如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18083.html

print(df_tick.price.resample('1min', closed='left', label='left').ohlc().head(20))
"""
                     open  high   low  close
time                                        
2019-08-10 09:25:00  7.89  7.89  7.89   7.89
2019-08-10 09:26:00   NaN   NaN   NaN    NaN
2019-08-10 09:27:00   NaN   NaN   NaN    NaN
2019-08-10 09:28:00   NaN   NaN   NaN    NaN
2019-08-10 09:29:00   NaN   NaN   NaN    NaN
2019-08-10 09:30:00  7.90  7.92  7.90   7.92
2019-08-10 09:31:00  7.91  7.92  7.90   7.91
2019-08-10 09:32:00  7.90  7.91  7.89   7.90
2019-08-10 09:33:00  7.89  7.91  7.89   7.90
2019-08-10 09:34:00  7.91  7.92  7.90   7.92
2019-08-10 09:35:00  7.92  7.94  7.91   7.93
2019-08-10 09:36:00  7.93  7.93  7.92   7.92
2019-08-10 09:37:00  7.93  7.93  7.91   7.91
2019-08-10 09:38:00  7.90  7.91  7.90   7.90
2019-08-10 09:39:00  7.90  7.90  7.89   7.90
2019-08-10 09:40:00  7.89  7.90  7.89   7.90
2019-08-10 09:41:00  7.90  7.90  7.89   7.89
2019-08-10 09:42:00  7.89  7.90  7.88   7.89
2019-08-10 09:43:00  7.89  7.89  7.88   7.89
2019-08-10 09:44:00  7.88  7.89  7.86   7.86
"""

复制代码

处理非交易时间段的NaN数据, 将所有列都为NaN的行删除,如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18083.html

df_min_ohlc = df_min_ohlc.dropna(axis=0,how='all') # NAN值删除 所有值都为缺失值时才删除该行
print(df_min_ohlc.head())
"""
                     open  high   low  close
time                                        
2019-08-10 09:25:00  7.89  7.89  7.89   7.89
2019-08-10 09:30:00  7.90  7.92  7.90   7.92
2019-08-10 09:31:00  7.91  7.92  7.90   7.91
2019-08-10 09:32:00  7.90  7.91  7.89   7.90
2019-08-10 09:33:00  7.89  7.91  7.89   7.90
"""
复制代码

接下来我们可以调用小册子《股票数据可视化:自定义Matplotlib版股票行情界面》的代码绘制K线图了,分别绘制1min和15min级别的K线图,如下图所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18083.html

Python量化交易进阶讲堂:股票分笔数据跨周期处理
Python量化交易进阶讲堂:股票分笔数据跨周期处理

另外tushare还提供了其他与分时交易数据相关的接口,比如: get_sina_dd()接口获取大单交易数据,默认为大于等于400手,也可通过vol参数指定返回具体成交量的交易数据,如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18083.html

# 获取大单交易数据,默认为大于等于400手,数据来源于新浪财经。
data=ts.get_sina_dd('600797',date = '2019-08-08')
print(data.head(10))
"""
     code  name      time  price  volume  preprice type
0  600797  浙大网新  15:00:00   8.01  253542      8.01   买盘
1  600797  浙大网新  14:56:18   8.01   45700      8.01   卖盘
2  600797  浙大网新  14:54:39   8.01  116400      8.01   买盘
3  600797  浙大网新  14:18:18   8.00   50000      8.00   买盘
4  600797  浙大网新  13:35:57   8.02   53100      8.01   卖盘
5  600797  浙大网新  13:33:57   8.03   42200      8.03   买盘
6  600797  浙大网新  13:25:18   8.01   64100      8.01   买盘
7  600797  浙大网新  13:25:15   8.01   41800      8.01   买盘
8  600797  浙大网新  13:22:57   8.04  135500      8.03   买盘
9  600797  浙大网新  13:22:00   8.01   44600      8.01   买盘
"""

复制代码

get_today_ticks()接口获取当前交易日已经产生的分笔明细数据,不过要在交易进行中使用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18083.html

get_realtime_quotes()获取实时分笔数据,可以实时取得股票当前报价和成交信息,其中一种场景是,写一个python定时程序来调用本接口(可两三秒执行一次,性能与行情软件基本一致),然后通过DataFrame的矩阵计算实现交易监控,可实时监测交易量和价格的变化。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18083.html

get_today_all()一次性获取当前交易所有股票的行情数据(如果是节假日,即为上一交易日,结果显示速度取决于网速)。如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18083.html

data=ts.get_today_all()
print(data)
"""
[Getting data:]############################################################        code   name      ...             mktcap           nmc
0     688388   嘉元科技      ...       1.470680e+06  3.365835e+05
1     688333    铂力特      ...       7.000000e+05  1.571451e+05
2     688188   柏楚电子      ...       2.425100e+06  5.555751e+05
3     688122   西部超导      ...       2.370954e+06  2.133204e+05
4     688099   晶晨股份      ...       6.166800e+06  5.598821e+05
5     688088   虹软科技      ...       2.791250e+06  2.612927e+05
6     688066   航天宏图      ...       1.011336e+06  2.293842e+05
7     688033   天宜上佳      ...       2.216313e+06  2.145303e+05
8     688029   南微医学      ...       1.628215e+06  3.735600e+05
...      ...    ...      ...                ...           ...
3743  600234  *ST山水      ...       1.447488e+05  1.447488e+05
3744  600228   ST昌九      ...       1.607191e+05  1.607191e+05
3745  600217   中再资环      ...       7.179371e+05  6.818769e+05
3746  600209   ST罗顿      ...       1.290693e+05  1.290693e+05
3747  600193   ST创兴      ...       1.552611e+05  1.552611e+05
3748  600186  *ST莲花      ...       1.741720e+05  1.741720e+05
3749  600179   ST安通      ...       3.836408e+05  1.737990e+05
3750  600163   中闽能源      ...       3.568091e+05  3.568091e+05
3751  600149   ST坊展      ...       1.927411e+05  1.927411e+05

[3752 rows x 15 columns]
"""
其中返回值包括code代码、name名称、changepercent涨跌幅、trade现价、open开盘价、high最高价、low最低价、

作者:元宵大师
链接:https://juejin.im/post/5da7239df265da5ba7453459
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18083.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/18083.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定