001 用python和tushare获取股票数据

数据获取可以用爬虫,api。api我了解的有tushare和pandas_datareader,用conda或者pip命令安装即可。此处只介绍tushare。

一、 注册

到tushare官网注册,并获取自己的token(调用api需要token才可以访问数据)。官网链接如下:

tushare pro官网(积分制,积分越多,权限越高)

Tushare数据

tushare官网(基础版,可获取的数据少,免费,已不再更新)

Tushare -财经数据接口包

注册后会有100积分,修改个人资料获得20积分,貌似积分越高允许的数据获取频率越高。

toke在个人主页可以查看。

二、 安装

pip instal tushare

三、 使用

简单例子如下:

1. 导入相关的库

import datetime
import tushare as ts
import pandas as pd
import numpy as np
%matplotlib inline
import matplotlib.pyplot as pltimport seaborn as sns    # 画图用的# token_str是在tushare注册的token
pro=ts.pro_api(token_str)

 2 获取的股票数据

# 获取某个股票的日数据。SZ代表深交所,SH代表上交所
start=datetime.date(2022,1,1).strftime('%Y%m%d')
end=datetime.date(2023,2,15).strftime('%Y%m%d')
df1 = pro.daily(ts_code='300474.SZ', start_date=start, end_date=end)# 获取上证指数数据,需要2000积分权限
# df1 = pro.index_daily(ts_code='000001.SH', start_date=start, end_date=end)
print(df1)# 升序
df1 = df1.sort_index(ascending=False)

 3. 查看前若干行数据

 4.  股票的描述性统计信息

df1.describe().round(2)    # 描述性统计

 5. 绘制收盘价趋势

df1.index = df1['trade_date']
df1['close'].plot(figsize=(12, 6))
plt.ylabel('close price')
plt.show()

 6. 绘制成交量数据

df1.index = df1['trade_date']
df1['vol'].plot(figsize=(12, 6))
plt.ylabel('vol')
plt.show()

7. 移动平均值

ma_days = [10, 20, 50]
for ma in ma_days:df1['ma{}'.format(ma)] = df1['close'].rolling(ma).mean()df1[['close', 'ma10', 'ma20', 'ma50']].plot(figsize=(12, 6))
plt.ylabel('close price')
plt.show()

 8. 日收益率

df1['daily_yield'] = df1['close'].pct_change()
df1['daily_yield'].plot(figsize=(12, 6))
plt.ylabel('daily yield')
plt.show()

9. 股票相关性

 

sns.jointplot(x='300474.SZ', y='603893.SH', data=daily_yield)

10. 蒙特卡洛模拟

# 定义蒙特卡洛函数
def monte_carlo(start_price, days, mu, sigma):dt = 1/daysprice = np.zeros(days)price[0] = start_priceshock = np.zeros(days)drift = np.zeros(days)for x in range(1, days):shock[x] = np.random.normal(loc=mu * dt, scale=sigma * np.sqrt(dt))drift[x] = mu * dtprice[x] = price[x-1] + (price[x-1] * (drift[x] + shock[x]))return price# 获取某个股票的日数据。SZ代表深交所,SH代表上交所
start=datetime.date(2022,1,1).strftime('%Y%m%d')
end=datetime.date(2023,2,16).strftime('%Y%m%d')
df2 = pro.daily(ts_code='300474.SZ', start_date=start, end_date=end)
df2 = df2.sort_index(ascending=False)rets = df2.close.pct_change()[1:]    # 涨幅
rets = rets.dropna()
rets.quantile(0.05)    # 95%置信空间外的分位数对应的可能涨跌runs = 10000    # 模拟次数
start_price = 82.67
days = 3    # 预测若干天后价格
mu = rets.mean()
sigma = rets.std()
simulations = np.zeros(runs)for run in range(runs):simulations[run] = monte_carlo(start_price, days, mu, sigma)[days-1]q = np.percentile(simulations, 1)print(simulations)
plt.figure(figsize=(8, 6))
plt.hist(simulations, bins=50, color='grey')
plt.figtext(0.6, 0.8, s='start price:%.2f' % start_price)
plt.figtext(0.6,0.7, 'predicted price:%.2f' % simulations.mean())
plt.figtext(0.15, 0.6, "q(0.99: %.2f)" % q)
plt.axvline(x=q, linewidth=6, color='r')
plt.title('%d天后模拟价格分布图' %days, weight='bold')
plt.show()

 

 

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

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

相关文章

现在学Python还有前途吗?能做什么?

现在学Python还有前途吗?能做什么?无论是从行业人才需求,国家政策支持,还是从Python本身广泛应用的优势来看,学Python都是极其有个人发展前途的。至于可以从事的工作岗位就更多了,像Linux运维、Python Web网…

ChatGPT:2. 使用OpenAI创建自己的AI网站:1. 初探API

使用OpenAI创建自己的AI网站 如果你还是一个OpenAI的小白,有OpenAI的账号,但想调用OpenAI的API搞一些有意思的事,那么这一系列的教程将仔细的为你讲解如何使用OpenAI的API制作属于自己的AI网站。博主只能利用下班时间更新,进度慢…

推荐一个好用的开发工具百宝箱

随着科技不断发展,越来越多的工具在网络上应运而生,方便我们更加高效地完成各种任务。今天我要向大家介绍一款在线工具——码加在线工具 - 做更好的工具,它可以帮助你轻松完成许多繁琐、复杂的工作。 首先,码加在线工具 是一款非…

零代码编程:用ChatGPT打造一个信息推送的微信机器人

很多时候,我们希望监控一些最新信息,能够第一时间在微信上看到。现在有很多这方面的消息推送工具,比如wxpusher、Pushplus、server饭、server酱等: pushplus:免费账号一天限制200条请求数,1分钟内最多接收…

案例:百度的评论系统是怎么设计的?你想象不到

百度评论中台为百度系产品提供便利接入、持续稳定的评论能力,是百度社区氛围体系内最重要的基础能力之一,日均流量达到百亿规模,在业务不断发展过程中,百度评论中台实现了功能快速迭代、性能稳步提升,本文将从整体介绍…

CSDN - 屏蔽无耻的百度广告

由于CSDN在chrome上显示效果与编辑页面都很友好,所以访问csdn或者维护博客时常使用chrome。 可恶的百度广告总是在左下角和右下角弹出,深恶痛绝啊!! 春天的到来!!—Adblock Plus插件 【1】下载 Adblock P…

在家可以做什么副业,适合新手的四个网上兼职

近期一个月,好多地方因口罩影响,多多少少都要求他们在家隔离,除开每日待在家里,也只能是在社区里散散步。想起很多小伙伴由于疫情在家里不可以工作中,收益逐渐变少少,很有可能的身上也有抵押借款和车辆贷款…

副业赚钱的路子有哪些?分享6种较为实用的副业方式

如今社会的压力越来越大,很多人都开始积极寻找副业赚钱的途径,以缓解生活中的经济压力。副业赚钱的方式多种多样,可以依据个人的兴趣爱好、特长技能来选择。以下分享6种较为实用的副业赚钱方式。 1、跑腿服务 跑腿服务是目前非常受欢迎的副业…

下午有自由时间可以做的副业推荐

对于大部分人来说,工资收入并不足以实现快速攒钱的目标。而且现在社会发展很快,大部分工作都不能保证稳定,所以发展自己的副业很重要。下面小编给大家推荐5个所有人都能做的副业,感兴趣的朋友可以从中选择适合自己的副业坚持做下去…

上班时间适合搞什么副业?最适合普通人的副业:用你的职业技能、生活经验来做

首先我告诉你所谓副业是和主业一样,或者说需要你投入十二分精力去对待的,需要你放弃社交娱乐,本质上就是一套自虐之路,做不到的还是老老实实上班才是正道 其次,你在网上看到所谓的副业介绍都只是别人的“副业”&#…

python网络副业有哪些?以自身经历分享怎么做副业挣钱

网络副业我个人比较看好的是Python,至少我是真实体会到了Python做副业真香,疫情被关在家那段时间也没耽误赚钱,反而比平常赚的还多一点,下图是我疫情期间在家做Python副业收入的部分截图,那会儿我用Excel表格每天记了一…

IT行业可以做的副业

去年一年,新冠疫情的阴霾让大部分职场人都不好过。当加薪和年终奖都遥不可及,不少人开始思考经营一份副业的可能性。 那么有没有什么是适合IT技术人员发展的副业呢?接外单赚取外快?不,这一定不会是最好的选择&#xff…

程序员可以做哪些副业?

原文链接:https://dsx2016.com/?p508 程序员自身的属性决定了副业的天花板。 最理想的情况是副业在赚钱的同时可以对主业进行属性加成。 同时如果主业做得好也能对副业产生积极的作用。 有鉴于996和24小时随机加班是it常态 推荐睡后收入的方式,并且长…

python可以做哪些副业

这是本文的目录 前言Python为什么会大受欢迎python副业有哪些1、兼职处理数据2、兼职查询资料3、兼职P图 零基础Python学习资料领取附上Python学习指南👉Python学习路线汇总👈👉Python必备开发工具👈👉Python学习视频6…

电脑副业能做什么?一台电脑能做的副业

现在很多人都想在工作之余开展一些副业,特别是今年经济形势不好,更让很多人明白了,有一份副业的重要性,这样可以在自己没有工作的时候还能有一份收入,那么有哪些副业可以在网络上做呢?如果你只有一台电脑的…

程序员做什么副业比较好,都有哪些副业可做?

其实对每个普通人来讲,副业有很多形式,不过消耗时间少的副业才是最好的,投入产出比不等的副业那是给自己找麻烦。 一、程序员可以做的副业汇总 1.接私单,赚外快。 难度:极大 成本:时间成本精力成本尾款风…

tracert命令

一、概述 tracert是Windows网络中的Trace Route功能的缩写, 用于确认数据包访问目标IP所经过的路径。 二、用法 tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name 三、参数 -d 指定不将地址解析为计算机名. -…

如何在 Linux 的 shell 里针对特定用户/组来限制某些命令的使用

0-前言 最近,业务侧有个需求,需要禁止特定用户访问linux特定的命令,如禁止用户A使用rm命令。 我们知道,在linux系统中,一切皆文件。 那么,这个问题也可以泛化为: 如何在linux里限制特定用户…

Android 公历农历

SolarLunarView 公历农历 - 日历View 1.显示中国节假日 2.公历 3.农历 预览 资源 名字资源AARsolar_lunar_view.aarGiteeSolarLunarViewGitHubSolarLunarView Maven 1.build.grade | setting.grade repositories {...maven { url https://jitpack.io } }2./app/build.gra…

php 获取农历,PHP获取农历、阳历转阴历

PHP获取农历、阳历转阴历 <?php class lunar{ #农历每月的天数 var $everyCMontharray( 0>array(8,0,0,0,0,0,0,0,0,0,0,0,29,30,7,1), 1>array(0,29,30,29,29,30,29,30,29,30,30,30,29,0,8,2), 2>array(0,30,29,30,29,29,30,29,30,29,30,30,30,0,9,3), 3>arr…