作者:悠悠做神仙
来源: 恒生LIGHT云社区
前面量化入门系列,给大家分享了一些编程语言以及数据源--> 量化交易入门系列1:编程语言与数据源 ,很多读者私信我,希望可以手把手的教一下如何进行量化分析,那么,今天就出一个教程,手把手教大家做股票分析。
- 本次采用编程语言:Python
- 数据源来源: 恒有数UDATA
对于恒有数UDATA,大家可能还不太了解,这里给大家介绍一下这个稳定、好用、数据丰富的数据源!
恒有数UDATA 是恒生电子股份有限公司提供的,涵盖股票、基金、债券、期权期货、港股等金融数据(数据目录见社区主页)。提供在线预览、在线下载和在线调试等功能,简单高效的API接口(接口语言包括HTTP、Python、MATLAB、Java),丰富的接口文档与帮助文档,使得用户可以方便快捷地获取数据。
- 在线使用数据,无需搭建本地数据库,随用随取,方便快捷。
- 不限次数、不限量,实现金融数据使用自由。
- 接口丰富,包含股票、基金、债券等全品种数据、基本面数据及行情数据。
- 持续更新,包含全量30年历史数据,数据保持每日更新。
- 支持多种语言,HTTP、Python、MATLAB、Java语言。
- 数据库精准全覆盖,20+年金融行业数据,保障稳定不宕机。
现在注册,还可以免费体验金融数据超值套餐,内含142个数据接口。
传送门: 恒有数
下面,我们就进入正题吧!
搭建环境
(1)安装3.0以上版本的python,下载地址为: https://www.python/downloads/ ;
(2)按需求安装Python IDE(集成开发环境),如PyCharm、Jupyter等,然后安装一些基础的函数库 pandas 、 PyYAML 、 requests ,可以 参考Python安装教程
(3)安装函数包 hs_udata :
使用命令行安装:`pip install hs_udata`
(4)安装完毕,可以用 pip list
查看安装的模块:
(5)数据源token获取
- 点击进入恒有数( https://udata.hs/ )进行账号注册,登录,详情可见: 注册流程
- 获取Token
Token是用户调取恒有数金融数据的唯一凭证,请务必妥善保管。如发现或疑似Token被他人盗用,可在个人中心→总览页面进行刷新操作,之前已生成的Token将失效。获取Token的具体步骤如下:
1)、在恒有数登录成功后,点击右上角 → 总览,进入用户个人中心。
2)、Token在应用信息栏展示,默认显示密文,可点击右侧睁开眼睛按钮查看明文Token,或者对Token进行刷新、复制。
注 :如果右侧的三个按钮点击无反应,请联系恒有数的工作人员。
获取股票数据
这里需要用到token,但是注意,一定要先选择免费购买的套餐,不然你的token可能没有获取数据的权限。
获取 股票列表
接口名称: stock_list
接口作用:记录A股上市、退市股票交易代码、股票名称、上市状态等信息;
请求参数
名称 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
listed_state | String | 否 | 上市状态 | 默认取全部,1-上市,2-终止; |
fields | String | 否 | 过滤字段集合 | 默认返回全部字段;指定多个字段时,用逗号隔开; |
返回参数
参数名 | 类型 | 长度 | 说明 | 备注 |
---|---|---|---|---|
secu_code | String | 20 | 证券代码 | |
hs_code | String | 20 | HS代码 | |
secu_abbr | String | 20 | 证券简称 | |
chi_name | String | 40 | 中文名称 | |
secu_market | String | 20 | 证券市场 | |
listed_state | String | 20 | 上市状态 | |
listed_sector | String | 20 | 上市板块 |
代码示例
#导入需要用到的模块set_token和stock_list
from hs_udata import set_token,stock_list
# 设置Token,填入你自己的token
set_token(token = 'xxxxxxx')
#获取股票列表参数,listed_state=1为上市状态
data = stock_list(listed_state = "1")
#打印一下获取到的股票列表,head默认取前5条,可以修改参数获取不同条数,比如:head(10)
print(data.head())
数据展示
可以看到展示了5调数据,但是这个展示可能不全,中间有三个点,这个可以通过修改设置避免。
代码修改如下
#引入画图框架
import pandas as pd
import numpy as np
#导入需要用到的模块set_token和stock_list
from hs_udata import set_token,stock_list
# 显示完整的列
pd.set_option('display.max_columns', None)
#显示完整的行
pd.set_option('display.max_rows', None)
#修改行宽度
pd.set_option('display.width', 1000)
# 设置Token,填入你自己的token
set_token(token = 'xxxxx')
#获取股票列表参数,listed_state=1为上市状态
data = stock_list(listed_state = "1")
#打印一下获取到的股票列表,head默认取前5条,可以修改参数获取不同条数,比如:head(10)
print(data.head(3))
效果展示
获取 股票日行情
接口名称: stock_quote_daily
接口作用:沪深日行情,包含昨收价、开盘价、最高价、最低价、收盘价、成交量、成交金额等数据。
请求参数
名称 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
en_prod_code | String | 否 | 证券代码 | 默认取值:600570.SH |
trading_date | String | 否 | 交易日期 | **默认取值:**2021-05-10 |
adjust_way | Integer | 否 | 复权方式 | 默认取值为0,不复权:"0","前复权":"1","后复权":"2" |
fields | String | 否 | 字段集合 | 默认返回全部字段;指定多个字段时,用逗号隔开; |
返回参数
参数名 | 类型 | 长度 | 说明 | 备注 |
---|---|---|---|---|
prod_code | String | 20 | 证券代码 | |
trading_date | String | 20 | 交易日期 | |
prev_close_price | Float | 16.4 | 前收盘价 | |
open_price | Float | 16.4 | 开盘价 | |
high_price | Float | 16.4 | 最高价 | |
low_price | Float | 16.4 | 最低价 | |
close_price | Float | 16.4 | 收盘价 | |
avg_price | String | 20 | 变动均价 | |
px_change | Float | 16.4 | 价格涨跌 | |
px_change_rate | Float | 16.4 | 涨跌幅 | |
turnover_ratio | Float | 16.4 | 换手率 | |
business_balance | Float | 16.4 | 成交额 | |
turnover_deals | Float | 16.4 | 成交笔数 | |
amplitude | Float | 16.4 | 振幅 | |
issue_price_change | Float | 16.4 | 相对发行价涨跌 | |
issue_price_change_rate | Float | 16.4 | 相对发行价涨跌幅(%) | |
recently_trading_date | String | 20 | 最近交易日期 | |
ratio_adjust_factor | Float | 16.4 | 复权因子 | |
business_amount | Float | 16.4 | 成交数量 | |
up_down_status | String | 20 | 涨跌停状态 | |
turnover_status | String | 20 | 交易状态 |
代码示例
#引入画图框架
import pandas as pd
import numpy as np
#导入需要用到的模块set_token和stock_list
from hs_udata import set_token,stock_quote_daily
# 显示完整的列
pd.set_option('display.max_columns', None)
#显示完整的行
pd.set_option('display.max_rows', None)
#修改行宽度,由于这次数据比较长,为了截图,写个小点的数值
pd.set_option('display.width', 200)
# 设置Token,你自己的token数据
set_token(token = 'xxxxxx')
#获取股票日行情
data = stock_quote_daily(en_prod_code="600031.SH",trading_date="20211122")
#打印数据
print(data.head())
数据展示
获取 每日龙虎榜
接口名称: lh_daily
接口作用:每日龙虎榜上榜股票的股票代码、成交金额、净买入额等数据。
请求参数
名称 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
trading_day | String | 否 | 交易日期 | 默认参数为:系统日期 |
fields | String | 否 | 字段集合 | 默认返回全部字段;指定多个字段时,用逗号隔开; |
注:单词最大返回条数为2000条,更多数据请按日期循环调取;
返回参数
参数名 | 类型 | 长度 | 说明 | 备注 |
---|---|---|---|---|
closing_price | Float | 16.4 | 最新价(元) | 单位:元 |
price_change_ratio | String | 20 | 涨跌幅 | |
stock_total | String | 20 | 最近一年上榜次数 | |
close_price | Float | 16.4 | 昨收价(元) | 单位:元 |
business_balance | Float | 16.4 | 成交金额(元) | 单位:元 |
business_amount | Integer | 20 | 成交量(股) | |
secu_abbr | String | 20 | 股票简称 | |
secu_code | String | 20 | 证券代码 | |
trading_day | String | 20 | 交易日期 | |
net_balance | Float | 16.4 | 净买入额(元) | 单位:元 |
mark | Integer | 40 | 标签 |
代码示例
#引入画图框架
import pandas as pd
import numpy as np
#导入需要用到的模块set_token和stock_list
from hs_udata import set_token,lh_daily
# 显示完整的列
pd.set_option('display.max_columns', None)
#显示完整的行
pd.set_option('display.max_rows', None)
#修改行宽度
pd.set_option('display.width', 200)
# 设置Token,你自己的token数据
set_token(token = '87ie-fZPtqqMO0HHVctzWKEQ6igL2wRpIxiZ70sYWEi8kDQ_qUtfldlnCUQK6ruH')
#获取股票日行情
data = lh_daily(trading_day="20211122")
#打印数据,取龙虎榜前10条数据
print(data.head(10))
数据展示
最后
今天给大家介绍了几个常用获取数据源的接口,实际上恒有数有142个数据接口,大家可以官网常看,里面有多重语言示例,上手方便。
看到现在,是不是觉得量化也没有想象那么难?那么,下一篇文章会在数据获取的基础上,对数据进行处理,绘制相应的图,方便对数据进行趋势分析等。一起期待吧!
更多推荐
【量化】手把手教你用 Python 做股票入门分析(一)
发布评论