python处理行情数据_Python进阶量化交易专栏场外篇12-股票分笔数据跨周期处理

本文主要是介绍python处理行情数据_Python进阶量化交易专栏场外篇12-股票分笔数据跨周期处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欢迎大家订阅《教你用 Python 进阶量化交易》专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下:

在专栏的15小节《股票交易数据的自动下载》介绍了获取日级别股票行情数据的方法,其实最原始的数据是分笔交易数据,行情软件的各种周期的数据都是通过分笔数据跨周期的转换形成的。本次场外篇笔者主要介绍分笔交易数据的获取和处理方法。

首先使用tushare库get_tick_data()接口获取浙大网新2019-08-08的历史分笔数据,如下所示:

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买卖类型【买盘、卖盘、中性盘】。

将分笔数据的行索引转换为时间序列,如下所示:

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数据合成一分钟数据。如下所示:

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的行删除,如下所示:

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

"""

接下来就可以用专栏第16小节《技术分析常用指标绘制》的代码绘制K线图了,分别绘制1min和15min级别的K线图,如下图所示:

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

另外tushare还提供了其他与分时交易数据相关的接口,比如:

get_sina_dd()接口获取大单交易数据,默认为大于等于400手,也可通过vol参数指定返回具体成交量的交易数据,如下所示:

# 获取大单交易数据,默认为大于等于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()接口获取当前交易日已经产生的分笔明细数据,不过要在交易进行中使用。

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

get_today_all()一次性获取当前交易所有股票的行情数据(如果是节假日,即为上一交易日,结果显示速度取决于网速)。如下所示:

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最低价、settlement昨日收盘价、volume成交量、turnoverratio换手率、amount成交金额、per市盈率、pb市净率、mktcap总市值、nmc流通市值。

关于完整代码可以加入专栏交流群获取。更多的量化交易内容欢迎大家订阅专栏阅读!!

这篇关于python处理行情数据_Python进阶量化交易专栏场外篇12-股票分笔数据跨周期处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/528366

相关文章

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

Python清空Word段落样式的三种方法

《Python清空Word段落样式的三种方法》:本文主要介绍如何用python-docx库清空Word段落样式,提供三种方法:设置为Normal样式、清除直接格式、创建新Normal样式,注意需重... 目录方法一:直接设置段落样式为"Normal"方法二:清除所有直接格式设置方法三:创建新的Normal样

Python调用LibreOffice处理自动化文档的完整指南

《Python调用LibreOffice处理自动化文档的完整指南》在数字化转型的浪潮中,文档处理自动化已成为提升效率的关键,LibreOffice作为开源办公软件的佼佼者,其命令行功能结合Python... 目录引言一、环境搭建:三步构建自动化基石1. 安装LibreOffice与python2. 验证安装

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis

Python按照24个实用大方向精选的上千种工具库汇总整理

《Python按照24个实用大方向精选的上千种工具库汇总整理》本文整理了Python生态中近千个库,涵盖数据处理、图像处理、网络开发、Web框架、人工智能、科学计算、GUI工具、测试框架、环境管理等多... 目录1、数据处理文本处理特殊文本处理html/XML 解析文件处理配置文件处理文档相关日志管理日期和

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl