jq获取input选取的文件名_tushare获取交易数据并可视化分析

获取数据是金融量化分析的第一步,找不到可靠、准确的数据,量化分析就无从谈起。随着信息技术的不断发展,数据获取渠道也越来越多,尤其是Python网络爬虫,近几年愈来愈火。然而,很多人毕竟精力有限,没时间专门去学习网络爬虫技术。当然,不会网络爬虫不要紧,我们还可以借助Python的开源数据包(其本质也是网络爬虫),如:tushare、baostock、pandas_datareader和yahoo等财经数据API,这样可以节省不少精力。本文将以tushare为例,演示如何获取股票数据,并进行简单的可视化分析。

b22c899baa7240fc86e7aeb0e55ef089.png

图1 股票涨跌驱动因素

cb10383b767264700465a58bec92cdc3.png

图2 公司基本面信息源

22a30c50e9e90f2cdbc689a48ea8eeff.png

图3 知名股票论坛

Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工到数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。当然,如果您习惯了用Excel或者关系型数据库做分析,您也可以通过Tushare的数据存储功能,将数据全部保存到本地后进行分析。从0.2.5版本开始,Tushare同时兼容Python 2.x和Python 3.x,对部分代码进行了重构,并优化了一些算法,确保数据获取的高效和稳定。

使用前提

  • 安装Python

  • 安装pandas

  • lxml也是必须的,正常情况下安装了Anaconda后无须单独安装,如果没有可执行:pip install lxml

建议安装Anaconda(http://www.continuum.io/downloads),一次安装包括了Python环境和全部依赖包,减少问题出现的几率。

下载安装

  • 方式1:pip install tushare

  • 方式2:访问https://pypi.python.org/pypi/Tushare/下载安装

除此之外,新版本需要注册获取token才能免费使用,果想拥有自己的token,可以点击https://tushare.pro/register?reg=300271注册。

#先引入后面分析、可视化等可能用到的库import tushare as tsimport pandas as pd  import matplotlib.pyplot as pltimport numpy as np#正常显示画图时出现的中文和负号from pylab import mplmpl.rcParams['font.sans-serif']=['SimHei']mpl.rcParams['axes.unicode_minus']=False#设置tokentoken='你的token'ts.set_token(token)pro = ts.pro_api(token)

个股行情数据:

pro.stock_basic()

参数:is_hs:是否沪深港通标的,N否、H沪股通、S深股通;list_status:上市状态,L上市、D退市、P暂停上市;exchange:交易所 SSE上交所,SZSE深交所,HKEX港交所。 

pro.daily(ts_code= 或 trade_date=)

日行情:daily;周行情:weekly;月行情:monthly

#获取当前上市的股票代码、简称、注册地、行业、上市时间等数据basic=pro.stock_basic(list_status='L')#查看前五行数据basic.head(5)#获取平安银行日行情数据pa=pro.daily(ts_code='000001.SZ', start_date='20150101',               end_date='20200818')pa.head()

得到如下结果:

b8dbe0763cc8cdee23fffebf7a22c71c.png

#定义获取多只股票函数:def get_stocks_data(stocklist,start,end):    all_data={}    for name,code in stocklist.items():        #qfq,前复权;hfq,后复权        all_data[name]=ts.pro_bar(ts_code=code,start_date=start, end_date=end,adj='qfq')    return all_data#保存本地def save_data(all_data):    for code,data in all_data.items():        data.to_csv('D:/MasterStudy/python/学习/test/实盘/'+code+'.csv',                     header=True, index=False)#以下为本人持有股票stocklist={'四环生物':'000518.SZ','牧原股份':'002714.SZ','恒瑞医药':'600276.SH',           '亨通光电':'600487.SH','中国平安':'601318.SH'}#时间为2015-01-01至2020-08-18all_data=get_stocks_data(stocklist,'20150101','20200818')all_data['牧原股份'].tail()#将数据保存到本地save_data(all_data)#读取本地文件夹里所有文件import os#文件存储路径file='D:/MasterStudy/python/学习/test/实盘/'g=os.walk(file)filenames=[]for path,d,filelist in g:    for filename in filelist:        filenames.append(os.path.join(filename))print(filenames)#将读取的数据文件放入一个字典中df={}#从文件名中分离出股票代码code=[name.split('.')[0] for name in filenames]for i in range(len(filenames)):    filename=file+filenames[i]    df[code[i]]=pd.read_csv(filename)    df[code[i]]['trade_date']=pd.to_datetime(df[code[i]]['trade_date'],format='%Y%m%d')    df[code[i]].set_index("trade_date", inplace=True)#查看第一只股票前五行数据df[code[0]].tail()

b7f91f560b9f554a4dcc305ad864e5a8.png

以上涉及到了复权的概念,那么为什么要设置复权呢?

所谓复权就是对股价和成交量进行权息修复,按照股票的实际涨跌绘制股价走势图,并把成交量调整为相同的股本口径。股票除权、除息之后,股价随之产生了变化,但实际成本并没有变化。

前复权即就是保持现有价位不变,将以前的价格缩减,将除权前的K线向下平移,使图形吻合,保持股价走势的连续性。前复权即就是保持现有价位不变,将以前的价格缩减,将除权前的K线向下平移,使图形吻合,保持股价走势的连续性。

后复权就是在K线图上以除权前的价格为基准来测算除权后股票的市场成本价。就是把除权后的价格按以前的价格换算过来。简单的说,就是保持先前的价格不变,而将以后的价格增加。

简单来说,就是随着公司的发展,股价和市值不断增高,而股价过高会把很多散(jiu)户(cai)挡在门外,这时候进行复权,就是把整个池子里的总的钱保持不变,把每股单价降低,总股数增加,进而降低散(jiu)户(cai)们的入场门槛,已经持股的股东则会得到配股。前复权就是保持现有价位不变,将以前的价格缩减;后复权就是保持以前的价位不变,将现在的价格提高。

plot_pos = [321,322,323,324,325] # 每个子图的位置new_colors = ['#1f77b4','#ff7f0e', '#2ca02c', '#d62728','#9467bd']# 每个子图的颜色fig = plt.figure(figsize=(16,18))fig.suptitle('自选股指走势',fontsize=18)for pos in np.arange(len(plot_pos)):           ax = fig.add_subplot(plot_pos[pos])     y_data =df[code[pos]]['close']      b = ax.plot(y_data,color=new_colors[pos])    ax.set_title(code[pos])        # 将右上边的两条边颜色设置为空,相当于抹掉这两条边    ax = plt.gca()      ax.spines['right'].set_color('none')     ax.spines['top'].set_color('none')plt.show()

7426414c2e2bc9f81d624316bfcaa0e9.png

以上选取了从2015年1月1日开始,到2020年8月18日的股票行情。可以看到,中国平安、恒瑞医药、牧原股份的涨势较好,且较平稳。亨通光电从长时间跨度来看虽然涨幅还可以,但中间回撤幅度较大,非常不稳定,四环生物则涨幅和稳定性都不好。

#累计收益plot_pos = [321,322,323,324,325] # 每个子图的位置new_colors = ['#1f77b4','#ff7f0e', '#2ca02c', '#d62728','#9467bd']fig = plt.figure(figsize=(16,18))fig.suptitle('股票收益率\n 2015-2020',fontsize=18)for pos in np.arange(len(plot_pos)):    ax = fig.add_subplot(plot_pos[pos])     y_data =df[code[pos]]['close']/df[code[pos]]['close'].iloc[-1]-1    b = ax.plot(y_data,color=new_colors[pos])    ax.set_title(code[pos])    # 将右上边的两条边颜色设置为空,相当于抹掉这两条边    ax = plt.gca()      ax.spines['right'].set_color('none')     ax.spines['top'].set_color('none')plt.show()

e8872e9fbebaca4d6787cacdee34918d.png

可以看出,从2015年1月1日至今,收益率从大到小的依次是牧原股份、恒瑞医药、亨通光电、中国平安、四环生物。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

原来游戏技术行业最大的秘密竟然是...

欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云发表于云社区专栏 本篇文章主要是分享游戏业务面临的安全风险场景,以及基于这些场景的特点,我们应该如何做好对应的防护。 【一、背景:游戏行业DDoS攻击…

指定Gradle构建属性

属性是用于轻松自定义Gradle构建和Gradle环境的宝贵工具。 我将在本文中演示一些用于指定Gradle构建中使用的属性的方法。 Gradle支持项目属性和系统属性 。 这篇文章中有趣的是两者之间的主要区别是如何访问它们。 通过常规Java / Groovy系统属性访问方法访问系统属性时&…

python数字转中文字符_Python实现中文数字转换为阿拉伯数字的方法示例

本文实例讲述了Python实现中文数字转换为阿拉伯数字的方法。分享给大家供大家参考,具体如下: 一、需求 今天写了三千二百行代码。 今天写了3200行代码。 两行意思相同,只是表达方式不太能够,统一掉。 二、原理 数字的特征是 数字 …

高级cmd攻击命令_一步一步学习DVWA渗透测试(Command Injection命令行注入)-第七次课...

各位小伙伴,今天我们继续学习Command Injection,翻译为中文就是命令行注入。是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的。在OWASP TOP 10中一种存在注入漏洞,最常见的就是SQL和命令行注入。PHP开发的…

IDEA插件之 CodeGlance

在编辑代码最右侧,显示一块代码小地图 这款插件使用效果图如下,个人感觉还是有点用处,滚动条太小,有这个地图,拖动起来更加方便一点 原文地址:http://tengj.top/2017/02/22/idea1-1/转载于:https://www.cnblogs.com/al…

移动端图片上传方法

移动端图片上传方法 实现效果 文件下载 http://files.cnblogs.com/files/sntetwt/移动端图片上传.rar 实现步骤 一、隐藏<input type"file" id"file" name"Filedata" style"display:none;" accept"image/*" /> 二、…

c语言最大公约数和最小公倍数_五年级奥数课堂之七:公因数和公倍数

乘积尾0的个数公因数和公倍数的基本概念公因数的释义给定若干个整数&#xff0c;如果有一个(些)数是它们共同的因数&#xff0c;那么这个(些)数就叫做它们的公因数。而全部公因数中最大的那个&#xff0c;称为这些整数的最大公因数。公约数与公倍数相反&#xff0c;就是既是A的…

设计模式(五)--工厂模式汇总

LZ想把简单工厂模式、工厂方法模式和抽象工厂模式整理到一篇博文当中&#xff0c;由浅入深&#xff0c;应该能方便理解和记忆&#xff0c;话不多说&#xff0c;进入正题。 一、简单工厂模式 定义&#xff1a;从设计模式的类型上来说&#xff0c;简单工厂模式是属于创建型模式&a…

如何估算内存消耗?

这个故事可以追溯到至少十年之前&#xff0c;当时我第一次接触PHB时遇到一个问题&#xff1a;“在生产部署中&#xff0c;我们需要购买多大服务器”。 我们正在构建的新的&#xff0c;闪亮的系统距离生产开始还有9个月的时间&#xff0c;显然该公司已承诺提供包括硬件在内的整个…

python爬取b站403_Python如何爬取b站热门视频并导入Excel

代码如下 #encoding:utf-8 import requests from lxml import etree import xlwt import os # 爬取b站热门视频信息 def spider(): video_list [] url "https://www.bilibili.com/ranking?spm_id_from333.851.b_7072696d61727950616765546162.3" html requests.g…

使用调试器进行事后跟踪

我最近一直在使用的大多数调试器的好功能是能够在断点上记录信息。 这对理解代码而无需修改是非常有用的&#xff0c;它涉及字节码修改。 让我们考虑一下这种非常琐碎且效率低下的函数实现&#xff0c;以返回斐波那契数列中的第n个数字。 public class Fib {public long fib(…

链表排序c++代码_[链表面试算法](一) 链表的删除-相关题型总结(6题)

在数据结构的最高层抽象里&#xff0c;只有两种结构&#xff0c;数组和链表。这两种结构&#xff0c;是所有其他数据结构实现的基础。队列和栈&#xff0c;可以用链表和数组来实现。图&#xff0c;可以用邻接表和邻接矩阵来实现&#xff0c;其中&#xff0c;邻接表就是链表&…

c语言如何空格键返回主菜单,C语言中scanf函数与空格回车的用法说明

众所周知&#xff0c;C语言中的scanf函数的作用是从标准输入设备(通常是键盘)读取输入值&#xff0c;并存储到参数列表中指针所指向的内存单元。下面从几个方面说一下一些稍微细节的东西。下面的实验都在vc6.0中通过。1、scanf的返回值scanf通常返回的是成功赋值(从标准输入设备…

Linear_algebra_03_矩阵

1. 矩阵的线性运算&#xff1a; 2.1 矩阵的乘法&#xff1a;Xik * Ykj Zij 2.2 矩阵乘法性质&#xff1a; 3.1 矩阵的幂次方运算 3.2 矩阵转置的运算律 3.3 方阵运算 4 分块矩阵的运算 5. 矩阵的初等变换 5.1 单位矩阵I经过一次初等变换所得到的矩阵称为初等矩阵. 5.2 初等矩…

js转json工具_菜鸟丨Egert3D微信小游戏发布与Unity工具使用

本次教程将会为大家介绍Egret3D工具导出Unity场景对象的使用&#xff0c;以及发布微信小游戏流程。让大家对Egret 3D有更加熟悉的了解。需求工具&#xff1a;1、Unity场景导出插件&#xff1b;2、微信开发者工具。导出插件的使用一、打开需要导出的Unity场景&#xff0c;并且把…

OI杂记

从今天开始记录一下为数不多天的OI历程 8.25 上 今天举行了难得的五校联考&#xff0c;模拟noip&#xff0c;题目的解压密码竟然是$aKnoIp2o18$&#xff0c;对你没有看错&#xff01;&#xff01;&#xff01; 7:50老师&#xff1f;啊啊啊啊&#xff0c;收不到题目啊&#xff0…

Java,Steam控制器和我

您是否想过是否可以将现有的东西用于新的东西&#xff1f; 我看了一些所谓的“蒸汽控制器”&#xff08;从现在开始为SC&#xff09;的镜头&#xff0c;并看着我的游戏手柄。 问我自己是否有可能以类似蒸汽的方式使用它&#xff0c;我找到了一些Java库并创建了一个项目&#xf…

unknown column in field list_tf.feature_column的特征处理探究

1. 背景tf.estimator是tensorflow的一个高级API接口&#xff0c;它最大的特点在于兼容分布式和单机两种场景&#xff0c;工程师可以在同一套代码结构下即实现单机训练也可以实现分布式训练&#xff0c;正是因为这样的特点&#xff0c;目前包括阿里在内的很多公司都在使用这一接…

pytorch如何定义损失函数_对比PyTorch和TensorFlow的自动差异和动态模型

使用自定义模型类从头开始训练线性回归&#xff0c;比较PyTorch 1.x和TensorFlow 2.x之间的自动差异和动态模型子类化方法&#xff0c;这篇简短的文章重点介绍如何在PyTorch 1.x和TensorFlow 2.x中分别使用带有模块/模型API的动态子类化模型&#xff0c;以及这些框架在训练循环…

Gradle命令行便利

在我的《用Gradle构建Java的gradle tasks 》一文中&#xff0c;我简要地提到了使用Gradle的“ gradle tasks ”命令来查看特定Gradle构建的可用任务。 在这篇文章中&#xff0c;我将对这一简短提及进行更多的扩展&#xff0c;并查看一些相关的Gradle命令行便利。 Gradle可以轻松…