python a股行情_用Python,tushare做一个A股每日收盘行情监测分析(含源代码)
灵感:对于交易者来说,每日收盘分析是一件必要的功课。现在的看盘软件种类很多,已经有很多整理好的数据,但是对于高阶玩家,可能需要更多自定义化的功能,做出自己的每日分析报表。那我们何不尝试用Python做一个?
先上结果:
好了,接下来就开始讲解下实现的方法和步骤。
开发环境IDE:Pycharm
编程语言: Python 3.6
必要包:tushare, pandas
解题思路拆解:
1. 如何获取每天的收盘数据?
2. 如何对每天的收盘数据进行分析?
解题过程:
1. 如何获取每天的收盘数据?
----他山之石可以攻玉。
1) 如果有万得这种软件的朋友,可以自己从万得导出。
2)可以尝试编写爬虫从网易财经的股票频道抓取数据。
3)直接使用tushare包的api,提取数据
今天就来讲解第三种方法。Tushare金融大数据社区tushare.pro
安装方法请参考刀客特鹿:Pyhton的package(包)安装方法zhuanlan.zhihu.com
tushare有很多获取数据的api可以很方便地直接调用,而我们只需要用到里面几个api就够用了,当然有兴趣的同学,可以把官网上的端口全部都自己尝试下。
第一个要用到的api:
get_today_all() # 获取所有股票的前一日的收盘行情
第二个要用到的api
get_stock_basics() # 获取股票当前的基本信息
有了这两个数据,就可以获取前一收盘日,或者今天收盘后的股票信息了。
源代码如下:
import tushare as ts
import pandas as pd
import time
import os
# 指定自己要存放文件的绝对路径
os.chdir('D:/all_trading_data/Every_days_analysis/input_data')
pd.set_option('expand_frame_repr', False)
# 从tushare获取指定日期
def get_today_all_ts(date):
date_now = date
# 先获得所有股票的收盘数据
df_close = ts.get_today_all()
# 获得所有股票的基本信息
df_basics = ts.get_stock_basics()
df_all = pd.merge(left=df_close, right=df_basics, on='name', how='outer')
df_all['code'] = df_all['code'].astype(str) + ' '
# 保存数据
df_all.to_csv(str(date_now) + '_ts.csv', index=False, encoding='gbk')
print('%sis downloaded.' % (str(date_now)))
print(df_all)
return df_all
if __name__ == '__main__':
get_today_all_ts(date='20180214')
每天的收盘数据都可以保存下来,也方便也厚再分析
打开效果如下
2. 如何对每天的收盘数据进行分析?
这一步只要用到我们的pandas就可以了,菜有了,具体是清蒸?红烧?还是蒜烤?还要看各位的喜好。
比如我想看每天收盘的涨跌情况,涨跌停的分析,寻找行业动因等。
简单的数量统计
涨停股票按行业分类
跌停股票按行业分类
整体A股的行业涨跌情况
按交易所分类:
涨停股票按区域分类:
跌停股票按区域分类:
A股整体涨跌按区域分类:
源代码如下:
import pandas as pd
import requests
import tushare as ts
import os
import time
import warnings
warnings.filterwarnings('ignore')
pd.set_option('expand_frame_repr', False)
os.chdir('D:/all_trading_data/Every_days_analysis')
date_now = '20180214'
print(str(date_now))
# ====龙虎榜数据
# 读取TDX的每日股票数据
df = pd.read_csv('input_data/{}_ts.csv'.format(str(date_now)), encoding='gbk')
df.fillna(0, inplace=True)
df.replace('nan ', 0, inplace=True)
df['timeToMarket'] = pd.to_datetime(df['timeToMarket'])
df[['changepercent', 'pe', 'mktcap', 'nmc']] = df[['changepercent', 'pe', 'mktcap', 'nmc']].astype(float)
df['timeToMarket'] = pd.to_datetime(df['timeToMarket'])
df['code'] = df['code'].astype(str) # 转化成str后,NAN也变成nan str格式
# 添加 交易所 列
df.loc[df['code'].str.startswith('3'), 'exchange'] = 'CY'
df.loc[df['code'].str.startswith('6'), 'exchange'] = 'SH'
df.loc[df['code'].str.startswith('0'), 'exchange'] = 'SZ'
# 找出上涨的股票
df_up = df[df['changepercent'] > 0.00]
# 走平股数
df_even = df[df['changepercent'] == 0.00]
# 找出下跌的股票
df_down = df[df['changepercent'] < 0.00]
# 找出涨停的股票
limit_up = df[df['changepercent'] >= 9.70]
limit_down = df[df['changepercent'] <= -9.70]
# 涨停股数中的未封板股,上市日期小于15天
limit_up_new = limit_up[pd.to_datetime(date_now) - limit_up['timeToMarket'] <= pd.Timedelta(15)]
# 涨停股数中次新股,上市日期小于1年
limit_up_fresh = limit_up[pd.to_datetime(date_now) - limit_up['timeToMarket'] <= pd.Timedelta(365)]
# 涨停股数中的未封板股,上市日期小于15天
limit_down_new = limit_down[pd.to_datetime(date_now) - limit_down['timeToMarket'] <= pd.Timedelta(15)]
# 涨停股数中次新股,上市日期小于1年
limit_down_fresh = limit_down[pd.to_datetime(date_now) - limit_down['timeToMarket'] <= pd.Timedelta(365)]
print('A股上涨个数: %d, A股下跌个数: %d, A股走平个数: %d。' % (df_up.shape[0], df_down.shape[0], df_even.shape[0]))
print('A股总成交额:%d, 总成交量:%d' % (df['amount'].sum(), df['volume'].sum()))
print('A股平均市盈率:%.2f, 平均流通市值 %.2f 亿, 平均总市值 %.2f 亿' % (df['pe'].mean(), df['nmc'].mean(), df['mktcap'].mean()))
print('涨停数量:%d 个, 涨停中上市日期小于15天的:%d, 涨停中上市日期小于1年的:%d' % (limit_up.shape[0], limit_up_new.shape[0], limit_up_fresh.shape[0]))
print('跌停数量:%d 个, 涨停中上市日期小于15天的:%d, 涨停中上市日期小于1年的:%d' % (limit_down.shape[0], limit_down_new.shape[0], limit_down_fresh.shape[0]))
# 获取指定列的分析统计结果
def get_output(df, columns='industry', name='_limit_up'):
df = df.copy()
output = pd.DataFrame()
output = pd.DataFrame(df.groupby(columns)['code'].count())
output['pe_mean'] = df.groupby(columns)['pe'].mean()
output['pe_median'] = df.groupby(columns)['pe'].median()
output['nmc_mean'] = df.groupby(columns)['nmc'].mean()
output['nmc_median'] = df.groupby(columns)['nmc'].median()
output['mktcap_mean'] = df.groupby(columns)['mktcap'].mean()
output['mktcap_median'] = df.groupby(columns)['mktcap'].median()
output['volume_mean'] = df.groupby(columns)['volume'].mean()
output['volume_median'] = df.groupby(columns)['volume'].median()
output['amount_mean'] = df.groupby(columns)['amount'].mean()
output['amount_median'] = df.groupby(columns)['amount'].median()
output.sort_values('code', ascending=False, inplace=True)
output.rename(columns={'code': name + '_count'}, inplace=True)
return output
for i in ['industry', 'exchange', 'area']:
# 对涨停的股票分析
output_limit_up = get_output(limit_up, columns=i, name='limit_up')
print(output_limit_up)
# 对跌停的股票分析
output_limit_down = get_output(limit_down, columns=i, name='limit_down')
print(output_limit_down)
# 对全量的股票分析
output_total = get_output(df, columns=i, name='total')
print(output_total)
当然,以上的统计都还是很初步的,但是你有了这个框架,完全可以自由发挥~做出你自己的每日行情分析总结~。对于初学者来说,可能还是不太能轻易理解以上所有代码~Tushare金融大数据社区tushare.pro
可以从我推荐的课程开始学习,教会零基础的你掌握python, pandas, 甚至做出自己的股票回撤框架。课程的详细介绍:刀客特鹿:量化交易学习笔记#Python量化入门课程(第零课)零基础的预备课zhuanlan.zhihu.com
python a股行情_用Python,tushare做一个A股每日收盘行情监测分析(含源代码)相关推荐
- python 涨停统计_用Python,tushare做一个A股每日收盘行情监测分析(含源代码)
灵感:对于交易者来说,每日收盘分析是一件必要的功课.现在的看盘软件种类很多,已经有很多整理好的数据,但是对于高阶玩家,可能需要更多自定义化的功能,做出自己的每日分析报表.那我们何不尝试用Python做 ...
- FANUC机器人_通过ROBOGUIDE从零开始做一个离线仿真项目(1)
FANUC机器人_通过ROBOGUIDE从零开始做一个离线仿真项目(1) 打开ROBOGUIDE软件,如下图所示,然后点击新建工作单元, 如下图所示,选择"HandlingPRO" ...
- python a股行情_使用Python下载A股行情的几种方法
使用Python下载A股行情的几种方法 1. tushare Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分 ...
- python证券交易数据接口_实战 | Python获取股票交易数据
项目介绍 看到标题大家的第一反应估计是怎么用爬虫来获取股票交易数据,要获取股票交易数据确实是需要用爬虫没错,不过还有比使用爬虫更加方便的方式.今天要给大家介绍的是一个专门用来获取国内股票交易数据的开源 ...
- python大牛 关东升_《Python从小白到大牛》第4章 Python语法基础
本章主要为大家介绍Python的一些语法,其中包括标识符.关键字.常量.变量.表达式.语句.注释.模块和包等内容. 标识符和关键字 任何一种计算机语言都离不开标识符和关键字,因此下面将详细介绍Pyth ...
- python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议
<Python之禅>中对于Python编程过程中的一些建议 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: <Python之禅>中对于Pyt ...
- python画交互式地图_使用Python构建交互式地图-入门指南
python画交互式地图 Welcome to The Beginner's Guide to Building Interactive Maps in Python 欢迎使用Python构建交互式地 ...
- python刷抖音_用Python生成抖音字符视频!
抖音字符视频在去年火过一段时间. 反正我是始终忘不了那段极乐净土的音乐... 这一次自己也来实现一波,做一个字符视频出来. 主要用到的库有cv2,pillow库. 原视频如下,直接抖音下载的,妥妥的水 ...
- python出现的意义_[转]Python中下划线以及命名空间的意义
Python 用下划线作为变量前缀和后缀指定特殊变量/方法. 主要存在四种情形 1. 1. object # public 2. __object__ # special, python system ...
最新文章
- STM32 电机教程 29 - 无刷无感入门1
- java 变长参数 知乎_变长参数探究
- oracle tabs作用,Oracle 中 table 函数的应用浅析
- leetcode怎么用时间刷_刷完700多题后的首次总结:LeetCode应该怎么刷?
- python none_None关键字,带Python示例
- UVa - 1617 - Laptop
- Pytorch:线性代数
- Python SQLite教程
- 计算机木马不会主动传播什么疾病,研究如何制作自动运行的木马病毒以及如何传播...
- 最新麻瓜编程实用主义学Python分享
- blos硬盘启动台式计算机,惠普台式机bios设置硬盘启动操作步骤
- 论文阅读 (47):DTFD-MIL: Double-Tier Feature Distillation Multiple Instance Learning for Histopathology..
- IPv6的DNS,设置DNS
- 爬虫Scrapy框架运用----房天下二手房数据采集
- ScrollView和HorizontalScrollView滚动条的简单使用
- 知乎高赞:拼多多和国家电网,选哪个?
- linux根分区写保护,目录写保护,求助大神
- DDL(数据库定义语言)
- linux中convert用法
- 有哪些相见恨晚的办公软件?
热门文章
- 计算机视觉——基于BOW的图像检索(作业六)
- halcon 导出C++程序与visualstdio2019配置环境,在控制台显示一张图片
- 利用USB RUBBER DUCKY(USB 橡皮鸭)在目标机器上启动Empire或Meterpreter会话
- python 邮件_Python发送邮件(常见四种邮件内容)
- 使用CODEX为你的项目编制一套代码库目录/索引
- 校长娱乐-我叫MT高级技能出处
- 一个25分钟的定时器(番茄时钟)
- 第三方二维码收款平台 哪家好
- DataGrip连接Hive详细步骤
- 学了C/C++,我能做什么?