如何获取股票日线数据格式
项目介绍看到标题大家的第一反应估计是怎么用爬虫来获取股票交易数据,要获取股票交易数据确实是需要用爬虫没错,不过还有比使用爬虫更加方便的方式。今天要给大家介绍的是一个专门用来获取国内......接下来具体说说实战|你知道如何用python获取股票交易数据吗
看到标题大家的靠前反应估计是怎么用爬虫来获取股票交易数据,要获取股票交易数据确实是需要用爬虫没错,不过还有比使用爬虫更加方便的方式。今天要给大家介绍的是一个专门用来获取国内股票交易数据的开源工具Tushare。
Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据。
安装方式就是:pip install tushare。
相关函数介绍
1.获取历史行情数据 get_hist_data()
获取个股历史交易数据(包括均线数据),可以通过参数设置获取日k线、周k线、月k线,以及5分钟、15分钟、30分钟和60分钟k线数据。本接口只能获取近3年的日线数据,适合搭配均线数据进行选股和分析。
参数说明:
code :股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)
start :开始日期,格式YYYY-MM-DD
end: 结束日期,格式YYYY-MM-DD
ktype: 数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
retry_count: 当网络异常后重试次数,默认为3
pause: 重试时停顿秒数,默认为0
返回值说明:
date: 日期
open: 开盘价
high: *高价
close: 收盘价
low: 最低价
volume: 成交量
price_change: 价格变动
p_change: 涨跌幅
ma5: 5日均价
ma10: 10日均价
ma20: 20日均价
v_ma5: 5日均量
v_ma10: 10日均量
v_ma20: 20日均量
使用方法
# 尔康制药(300267),取近3年数据
ts.get_hist_data(code)
使用方法
# 尔康制药(300267),取指定日期的数据
ts.get_hist_data(code, start='2018-01-01', end='2018-06-31')
2.get_h_data()
在不指定开始时间和结束时间时,该函数默认返回最近一年的日线数据,返回的数据与get_hist_data不同的是,该函数只返回开盘价(open)、*高价(high)、收盘价(close)、最低价(low)、成交量(volume)、成交金额(amount)六列 ,同样加上时间段也可以获取相应数据。
使用方法
# 尔康制药(300267),取近一年数据
ts.get_h_data(code)
3.get_k_data()
前两个函数相比,这个函数获取数据的速度很明显要快很多,而且可以返回每一只股票从上市开始到当前交易日的所有日线数据,这个有点是前两个函数都不具备的,更重要的是,如果批量获取多只股票的数据,前两个都不如get_k_data()稳定。
使用方法
# 尔康制药(300267),取近1年数据
ts.get_k_data(code)
4.取实时行情数据get_today_all()
返回值说明:
code :代码
name :名称
changepercent :涨跌幅
trade :现价
open :开盘价
high :*高价
low :最低价
settlement :昨日收盘价
volume :成交量
turnoverratio :换手率
amount :成交量
per :市盈率
pb :市净率
mktcap :总市值
nmc :流通市值
使用方法
# 一次性获取当前交易所有股票的行情数据(如果是节假日,即为上一交易日)
ts.get_today_all()
[Getting data:]############################################################
5.获取当日历史分笔数据get_today_ticks()
获取当前交易日(交易进行中使用)已经产生的分笔明细数据。
参数说明:
code :股票代码,即6位数字代码
retry_count : int, 默认3,如遇网络等问题重复执行的次数
pause : int, 默认 0,重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题
返回值说明:
time :时间
price :当前价格
pchange :涨跌幅
change :价格变动
volume :成交手
amount :成交金额(元)
type :买卖类型【买盘、卖盘、中性盘】
使用方法
ts.get_today_ticks(code)
[Getting data:]##################
6.获取实时分笔数据get_realtime_quotes()
获取实时分笔数据,可以实时取得股票当前报价和成交信息,其中一种场景是,写一个python定时程序来调用本接口(可两三秒执行一次,性能与行情软件基本一致),然后通过DataFrame的矩阵计算实现交易监控,可实时监测交易量和价格的变化。
参数说明:
symbols :6位数字股票代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板) 可输入的类型:str、list、set或者pandas的Series对象
返回值说明:
0 :name,股票名字
1 :open,今日开盘价
2 :pre_close,昨日收盘价
3 :price,当前价格
4 :high,今日*高价
5 :low,今日最低价
6 :bid,竞买价,即“买一”报价
7:ask,竞卖价,即“卖一”报价
8 :volume,成交量 maybe you need do volume/100
9 :amount,成交金额(元 CNY)
10 :b1_v,委买一(笔数 bid volume)
11 :b1_p,委买一(价格 bid price)
12 :b2_v,“买二”
13 :b2_p,“买二”
14 :b3_v,“买三”
15 :b3_p,“买三”
16 :b4_v,“买四”
17 :b4_p,“买四”
18 :b5_v,“买五”
19 :b5_p,“买五”
20 :a1_v,委卖一(笔数 ask volume)
21 :a1_p,委卖一(价格 ask price)
...
30 :date,日期
31 :time,时间
使用方法
# 单个股票实时行情
df = ts.get_realtime_quotes(code)
使用方法
# 需要显示的属性
df[['code','name','price','bid','ask','volume','amount','time']]
使用方法
for i in range(5):
df = ts.get_realtime_quotes(code)
df = df[['code','name','price','bid','ask','volume','amount','time']]
print(df)
time.sleep(2)
使用方法
# 多只股票的实时分笔数据(较好不要超过30)
df = ts.get_realtime_quotes(['600460','000762','000725'])
df[['code','name','price','bid','ask','volume','amount','time']]
使用方法
# 获取实时指数
#上证指数 深圳成指 沪深300指数 上证50 中小板 创业板
ts.get_realtime_quotes(['sh','sz','hs300','sz50','zxb','cyb'])
7.大盘指数行情列表:
获取大盘指数实时行情列表,以表格的形式展示大盘指数实时行情。
返回值说明:
code :指数代码
name :指数名称
change :涨跌幅
open :开盘点位
preclose :昨日收盘点位
close :收盘点位
high :*高点位
low :最低点位
volume :成交量(手)
amount :成交金额(亿元)
使用方法
ts.get_index()
使用方法
ts.realtime_boxoffice()
文章参考链接:
https://www.cnblogs.com/DreamRJF/p/8660630.html
# 白点数据,运行环境Python3.8 # -*- coding: UTF-8 -*- import baostock as bs import pandas as pd import json import datetime import os import time #### 日K线参数名称及定义 #### ## 参数名称参数描述说明 ## 0 date交易所行情日期格式:YYYY-MM-DD ## 1 code证券代码格式:sh.600000。sh:上海,sz:深圳 ## 2 open今开盘价格精度:小数点后4位;单位:人民币元 ## 3 high*高价精度:小数点后4位;单位:人民币元 ## 4 low最低价精度:小数点后4位;单位:人民币元 ## 5 close今收盘价精度:小数点后4位;单位:人民币元 ## 6 preclose昨日收盘价精度:小数点后4位;单位:人民币元 ## 7 volume成交数量单位:股 ## 8 amount成交金额精度:小数点后4位;单位:人民币元 ## 9 adjustflag复权状态不复权、前复权、后复权 ## 10 turn换手率精度:小数点后6位;单位:% ## 11 tradestatus交易状态1:正常交易 0:停牌 ## 12 pctChg涨跌幅(百分比)精度:小数点后6位 ## 13 peTTM滚动市盈率精度:小数点后6位 ## 14 psTTM滚动市销率精度:小数点后6位 ## 15 pcfNcfTTM滚动市现率精度:小数点后6位 ## 16 pbMRQ市净率精度:小数点后6位 ## 17 isST是否ST1是,0否 with open( 'data/sh_sz.txt' , 'r' , encoding= 'utf-8-sig' , newline= '\r\n' ) as f: ddd=json.loads(f.read()) #### 登陆系统 #### lg = bs.login() # 显示登陆返回信息 print( 'login respond error_code:' +lg.error_code)print( 'login respond error_msg:' +lg.error_msg)a= "d" # 日线 for dd in ddd: #print(dd[0]) if dd[ 0 ][: 3 ]!= "of." : #if dd[0][:3]=="sh.": print(dd[ 0 ]) #time.sleep(0.1) if os.path.exists( f'data/k_line_d/ {dd[ 0 ]} _ {a} .txt' ): with open( f'data/k_line_d/ {dd[ 0 ]} _ {a} .txt' , 'r' , encoding= 'utf-8-sig' , newline= '\r\n' ) as f: ooo=json.loads(f.read()) if ooo==[]: t_str= "1900-01-01" else : t_str=(datetime.datetime.strptime(ooo[ -1 ][ 0 ], '%Y-%m-%d' )+datetime.timedelta(days= 1 )).strftime( "%Y-%m-%d" ) else : ooo=[] t_str= "1900-01-01" #### 获取沪深A股历史K线数据 #### # 详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。“分钟线”不包含指数。 # 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag # 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg #日线 ## if t_str==time.strftime("%Y-%m-%d", time.localtime(time.time()+3600*24)): ## print("---已下载---") ## continue rs = bs.query_history_k_data_plus(dd[ 0 ], "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,peTTM,psTTM,pcfNcfTTM,pbMRQ,isST" , start_date=t_str, end_date= '2099-12-31' , frequency=a, adjustflag= "3" ) ## #周线 ## rs = bs.query_history_k_data_plus(dd[0], ## "date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg", ## start_date='1900-01-01', end_date='2099-12-31', ## frequency=a, adjustflag="3") print( 'query_history_k_data_plus respond error_code:' +rs.error_code) print( 'query_history_k_data_plus respond error_msg:' +rs.error_msg) #### 打印结果集 #### #data_list = [] while (rs.error_code == '0' ) & rs.next(): # 获取一条记录,将记录合并在一起 #data_list.append(rs.get_row_data()) ooo.append(rs.get_row_data()) with open( f'data/k_line_d/ {dd[ 0 ]} _ {a} .txt' , 'w' , encoding= 'utf-8' , newline= '\r\n' ) as f: #f.write(json.dumps(data_list, indent=4, ensure_ascii=False)+"\r\n") f.write(json.dumps(ooo, indent= 4 , ensure_ascii= False )+ "\r\n" ) #result = pd.DataFrame(data_list, columns=rs.fields) #### 结果集输出到csv文件 #### #result.to_csv("D:\\history_A_stock_k_data.csv", index=False) #result.to_csv("sh_6005190.csv", index=True) #print(result) #### 登出系统 #### bs.logout()print( "--end--" )
下载保存的K线数据格式如下:
日K线数据格式
看到标题大家的靠前反应估计是怎么用爬虫来获取股票交易数据,要获取股票交易数据确实是需要用爬虫没错,不过还有比使用爬虫更加方便的方式。今天要给大家介绍的是一个专门用来获取国内股票交易数据的开源工具Tushare。
Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据。
安装方式就是:pip install tushare。
相关函数介绍
import tushare as tsimport timeimport sys
1.获取历史行情数据 get_hist_data()
获取个股历史交易数据(包括均线数据),可以通过参数设置获取日k线、周k线、月k线,以及5分钟、15分钟、30分钟和60分钟k线数据。本接口只能获取近3年的日线数据,适合搭配均线数据进行选股和分析。
参数说明:
code: 股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)
start: 开始日期,格式YYYY-MM-DD
end: 结束日期,格式YYYY-MM-DD
ktype: 数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
retry_count: 当网络异常后重试次数,默认为3
pause: 重试时停顿秒数,默认为0
返回值说明:
date: 日期
open: 开盘价
high: *高价
close: 收盘价
low: 最低价
volume: 成交量
price_change: 价格变动
p_change: 涨跌幅
ma5: 5日均价
ma10: 10日均价
ma20: 20日均价
v_ma5: 5日均量
v_ma10: 10日均量
v_ma20: 20日均量
使用方法
# 尔康制药(300267),取近3年数据ts.get_hist_data(code)
执行结果 (注:以下截图均为部分截图)
使用方法
# 尔康制药(300267),取指定日期的数据ts.get_hist_data(code, start='2018-01-01', end='2018-06-31')
执行结果
2.get_h_data()
在不指定开始时间和结束时间时,该函数默认返回最近一年的日线数据,返回的数据与get_hist_data不同的是,该函数只返回开盘价(open)、*高价(high)、收盘价(close)、最低价(low)、成交量(volume)、成交金额(amount)六列 ,同样加上时间段也可以获取相应数据。
使用方法
# 尔康制药(300267),取近一年数据ts.get_h_data(code)
执行结果
3.get_k_data()
前两个函数相比,这个函数获取数据的速度很明显要快很多,而且可以返回每一只股票从上市开始到当前交易日的所有日线数据,这个有点是前两个函数都不具备的,更重要的是,如果批量获取多只股票的数据,前两个都不如get_k_data()稳定。
使用方法
# 尔康制药(300267),取近1年数据ts.get_k_data(code)
执行结果
其他
ts.get_hist_data(code, ktype='W') #获取周k线数据ts.get_hist_data(code, ktype='M') #获取月k线数据ts.get_hist_data(code, ktype='5') #获取5分钟k线数据ts.get_hist_data(code, ktype='15') #获取15分钟k线数据ts.get_hist_data(code, ktype='30') #获取30分钟k线数据ts.get_hist_data(code, ktype='60') #获取60分钟k线数据ts.get_hist_data('sh') #获取上证指数k线数据,其它参数与个股一致,下同ts.get_hist_data('sz') #获取深圳成指k线数据ts.get_hist_data('hs300') #获取沪深300指数k线数据ts.get_hist_data('sz50') #获取上证50指数k线数据ts.get_hist_data('zxb') #获取中小板指数k线数据ts.get_hist_data('cyb') #获取创业板指数k线数据
4.取实时行情数据get_today_all()
返回值说明:
code :代码
name :名称
changepercent :涨跌幅
trade :现价
open :开盘价
high :*高价
low :最低价
settlement :昨日收盘价
volume :成交量
turnoverratio :换手率
amount :成交量
per :市盈率
pb :市净率
mktcap :总市值
nmc :流通市值
使用方法
# 一次性获取当前交易所有股票的行情数据(如果是节假日,即为上一交易日)ts.get_today_all()[Getting data:]############################################################
执行结果
5.获取当日历史分笔数据get_today_ticks()
获取当前交易日(交易进行中使用)已经产生的分笔明细数据。
参数说明:
code :股票代码,即6位数字代码
retry_count : int, 默认3,如遇网络等问题重复执行的次数
pause : int, 默认 0,重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题
返回值说明:
time :时间
price :当前价格
pchange :涨跌幅
change :价格变动
volume :成交手
amount :成交金额(元)
type :买卖类型【买盘、卖盘、中性盘】
使用方法
ts.get_today_ticks(code)[Getting data:]##################
执行结果
6.获取实时分笔数据get_realtime_quotes()
获取实时分笔数据,可以实时取得股票当前报价和成交信息,其中一种场景是,写一个python定时程序来调用本接口(可两三秒执行一次,性能与行情软件基本一致),然后通过DataFrame的矩阵计算实现交易监控,可实时监测交易量和价格的变化。
参数说明:
symbols :6位数字股票代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板) 可输入的类型:str、list、set或者pandas的Series对象
返回值说明:
0 :name,股票名字
1 :open,今日开盘价
2 :pre_close,昨日收盘价
3 :price,当前价格
4 :high,今日*高价
5 :low,今日最低价
6 :bid,竞买价,即“买一”报价
7:ask,竞卖价,即“卖一”报价
8 :volume,成交量 maybe you need do volume/100
9 :amount,成交金额(元 CNY)
10 :b1_v,委买一(笔数 bid volume)
11 :b1_p,委买一(价格 bid price)
12 :b2_v,“买二”
13 :b2_p,“买二”
14 :b3_v,“买三”
15 :b3_p,“买三”
16 :b4_v,“买四”
17 :b4_p,“买四”
18 :b5_v,“买五”
19 :b5_p,“买五”
20 :a1_v,委卖一(笔数 ask volume)
21 :a1_p,委卖一(价格 ask price)
...
30 :date,日期
31 :time,时间
使用方法
# 单个股票实时行情 df = ts.get_realtime_quotes(code) df
执行结果
使用方法
# 需要显示的属性df[['code','name','price','bid','ask','volume','amount','time']]
执行结果
使用方法
for i in range(5): df = ts.get_realtime_quotes(code) df = df[['code','name','price','bid','ask','volume','amount','time']] print(df) time.sleep(2)
执行结果
使用方法
# 多只股票的实时分笔数据(较好不要超过30)df = ts.get_realtime_quotes(['600460','000762','000725'])df[['code','name','price','bid','ask','volume','amount','time']]
执行结果
使用方法
# 获取实时指数#上证指数 深圳成指 沪深300指数 上证50 中小板 创业板ts.get_realtime_quotes(['sh','sz','hs300','sz50','zxb','cyb'])
执行结果
7.大盘指数行情列表:
获取大盘指数实时行情列表,以表格的形式展示大盘指数实时行情。
返回值说明:
code :指数代码
name :指数名称
change :涨跌幅
open :开盘点位
preclose :昨日收盘点位
close :收盘点位
high :*高点位
low :最低点位
volume :成交量(手)
amount :成交金额(亿元)
使用方法
ts.get_index()
执行结果
使用方法
ts.realtime_boxoffice()
执行结果
文章参考链接:
https://www.cnblogs.com/DreamRJF/p/8660630.html
http://tushare.waditu.com/trading.html
关注公众号: X人工智能学院
以上就是如何获取股票日线数据格式?实战|你知道如何用python获取股票交易数据吗?的详细内容,希望通过阅读小编的文章之后能够有所收获!