灵感:对于交易者来说,每日收盘分析是一件必要的功课。现在的看盘软件种类很多,已经有很多整理好的数据,但是对于高阶玩家,可能需要更多自定义化的功能,做出自己的每日分析报表。那我们何不尝试用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 涨停统计_用Python,tushare做一个A股每日收盘行情监测分析(含源代码)相关推荐

  1. python a股行情_用Python,tushare做一个A股每日收盘行情监测分析(含源代码)

    灵感:对于交易者来说,每日收盘分析是一件必要的功课.现在的看盘软件种类很多,已经有很多整理好的数据,但是对于高阶玩家,可能需要更多自定义化的功能,做出自己的每日分析报表.那我们何不尝试用Python做 ...

  2. 如何用python画转盘_如何用ppt做一个抽奖转盘 看完你学会了么

    现在抽奖转盘是很常见的,有时候公司办活动也会有抽奖活动,如果让自己做一个抽奖转盘,应该怎么做? 操作方法 01 打开ppt,把幻灯片版式设置成空白的,然后点击插入,选择图表. 02 选择饼图,用第一种 ...

  3. python闰年统计_利用Python写一个闰年计算器和每月天数计算器

    闰年计算器 题目:输入年份,判断该年是否为闰年. 方法:1.能被400整除的年份 2.能被4整除,但不能被100整除 1 print('---闰年判断器kql,按q退出---') 2 while Tr ...

  4. python关键词统计_使用Python快速统计关键词及其词频

    版权声明:转载附链接哦.https://blog.csdn.net/weixin_43886356/article/details/86711012 思路: 1.通过jieba库分词获取所有的词语列表 ...

  5. python成绩统计_用Python操作Excel,实现班级成绩的统计

    本次是在原来有一定格式的Excel文档中补充成绩. 安装的模块:xlwt . xlrd .xlutils xlrd的模块是只用读取xls文件,不能写文件,同理xlwt,只(新建写)不读已有的xls, ...

  6. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  7. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  8. 利用python和Tushare自动更新A股每日数据

    利用python和Tushare自动更新A股每日数据 tushare ID :423004 所需接口 整体思路为: 1.利用stock_basic获取ts_code,获得沪深全部上市公司股票代码 2. ...

  9. python微博接口_使用python调用新浪微博接口

    微博很火啊,那python是不是可以调用微博的api做一个小应用呢?答案是:必须可以,哈哈使用python调用weibo api # 调用的url地址 此为获取某人的个人信息的api http://o ...

最新文章

  1. 震惊!ConcurrentHashMap里面也有死循环,作者留下的“彩蛋”了解一下?
  2. java映射文件是哪一种xml_java解析xml的几种方式哪种最好?
  3. Spring Roo开发初评
  4. JavaScript基础01【简介、js编写位置、基本语法(6种基本数据类型)】
  5. DNS术语,组件和概念介绍
  6. java定义一个方法,返回整数数组的元素最大值
  7. 谷歌 ICLR 2020 | 向量化召回也需要『预训练』
  8. 计算机打字键盘亮怎么设置,键盘指示灯亮着却不能打字的解决方法
  9. Linux压缩命令gzip, bzip2和tar
  10. html5+一屏一区域内容,iPhoneX页面安全区域与内容重叠问题
  11. JavaEE与云服务知识概括
  12. ImageMagick将多张图片拼接成一张图片_今天才发现,微信按下“这个”按钮,能将手机里的照片拼接成长图...
  13. 当医疗邂逅ICT——长沙湘雅医疗现场会,我们,不见不散
  14. 制药巨头测试IBM的区块链系统以改善临床试验
  15. How to configure Copyright Profiles in IntelliJ IDEA
  16. 应对全球变暖,数据分析是不可或缺的工具
  17. [思步网微讲坛] 高效研发团队的打造 总结
  18. 敏感性、特异性(sensitivity and specificity)| 假阳性、假阴性 | FDR | 第一类错误、第二类错误 | ROC | AUC...
  19. [SQL Server无法连接到服务器]标题: 连接到服务器 --------- 无法连接到 ****
  20. AI(二):有信息(启发式)的搜索策略

热门文章

  1. [Sensor] PIR 热释电效应 菲涅尔透镜
  2. jQuery仿Android锁屏图案应用
  3. python3.5《机器学习实战》学习笔记(五):决策树算法实战之预测隐形眼镜类型
  4. BDE卸载时问题解决 Could not open INSTALL.LOG file
  5. PDF怎么识别提取文字?这个方法轻松提取
  6. js获取当前时间与获取时间戳,时间戳转换时间和时间转换时间戳
  7. TypeScript 中的问号+冒号、双问号、问号+点、感叹号+点
  8. 不同型号的二极管模块并联_一招教你如何判别IGBT模块好坏
  9. python扫雷游戏实验分析_529. 扫雷游戏(Python)
  10. jmeter可以做哪些测试?