作者:悠悠做神仙

来源: 恒生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 做股票入门分析(一)