​​


作者:悠悠做神仙​


前面量化入门系列,给大家分享了一些编程语言以及数据源-->​​量化交易入门系列1:编程语言与数据源​​,很多读者私信我,希望可以手把手的教一下如何进行量化分析,那么,今天就出一个教程,手把手教大家做股票分析。

对于恒有数UDATA,大家可能还不太了解,这里给大家介绍一下这个稳定、好用、数据丰富的数据源!

【量化】手把手教你用 Python 做股票入门分析(一)_java

恒有数UDATA​ 是恒生电子股份有限公司提供的,涵盖股票、基金、债券、期权期货、港股等金融数据(数据目录见社区主页)。提供在线预览、在线下载和在线调试等功能,简单高效的API接口(接口语言包括HTTP、Python、MATLAB、Java),丰富的接口文档与帮助文档,使得用户可以方便快捷地获取数据。

  • 在线使用数据,无需搭建本地数据库,随用随取,方便快捷。
  • 不限次数、不限量,实现金融数据使用自由。
  • 接口丰富,包含股票、基金、债券等全品种数据、基本面数据及行情数据。
  • 持续更新,包含全量30年历史数据,数据保持每日更新。
  • 支持多种语言,HTTP、Python、MATLAB、Java语言。
  • 数据库精准全覆盖,20+年金融行业数据,保障稳定不宕机。

现在注册,还可以免费体验金融数据超值套餐,内含142个数据接口。

传送门:​​恒有数​

下面,我们就进入正题吧!

搭建环境

(1)安装3.0以上版本的python,下载地址为:​​https://www.python.org/downloads/​​;

(2)按需求安装Python IDE(集成开发环境),如PyCharm、Jupyter等,然后安装一些基础的函数库​pandas​ 、​PyYAML​ 、​requests​,可以​​参考Python安装教程​

(3)安装函数包​hs_udata​ :

使用命令行安装:`pip install hs_udata`

(4)安装完毕,可以用 ​​pip list​​查看安装的模块:

【量化】手把手教你用 Python 做股票入门分析(一)_matlab_02

(5)数据源token获取

Token是用户调取恒有数金融数据的唯一凭证,请务必妥善保管。如发现或疑似Token被他人盗用,可在个人中心→总览页面进行刷新操作,之前已生成的Token将失效。获取Token的具体步骤如下:

1)、在恒有数登录成功后,点击右上角 → 总览,进入用户个人中心。

【量化】手把手教你用 Python 做股票入门分析(一)_numpy_03

2)、Token在应用信息栏展示,默认显示密文,可点击右侧睁开眼睛按钮查看明文Token,或者对Token进行刷新、复制。

【量化】手把手教你用 Python 做股票入门分析(一)_numpy_04

【量化】手把手教你用 Python 做股票入门分析(一)_java_05

【量化】手把手教你用 Python 做股票入门分析(一)_pip_06

【量化】手把手教你用 Python 做股票入门分析(一)_java_07

​:如果右侧的三个按钮点击无反应,请联系恒有数的工作人员。

获取股票数据

这里需要用到token,但是注意,一定要先选择免费购买的套餐,不然你的token可能没有获取数据的权限。

【量化】手把手教你用 Python 做股票入门分析(一)_numpy_08

获取​​股票列表​

接口名称:​​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个数据接口,大家可以官网常看,里面有多重语言示例,上手方便。

看到现在,是不是觉得量化也没有想象那么难?那么,下一篇文章会在数据获取的基础上,对数据进行处理,绘制相应的图,方便对数据进行趋势分析等。一起期待吧!