本期目标:
从聚宽数据API中获取期权行情数据并写入到云数据库(MySql)中,通过superset访问存储在数据库中的数据。
本期导读:
- 聚宽金融数据API
- 获取ETF期权日终行情
- 数据写入到MySql数据库
- Superset中访问数据库
- 下节预告
一、聚宽金融数据API
聚宽量化平台(https://www.joinquant.com/help/api/help?name=JQData)提供了为期一年的免费数据使用权限,注册用户每天可以免费提取100万条数据。
- 首先根据官网的指引进行用户注册和登录并提交试用申请,请参考如下文档:
图一 聚宽api官方文档
- 参考聚宽文档中的‘如何安装使用JQData’进行环境配置。登录你的阿里云服务器,进入命令行工具(黑窗口),运行命令:‘pip install jqdatasdk’,进行聚宽API接口的安装,安装完成后输入命令:‘pip list’查看是否安装成功。
图二 查看聚宽数据接口是否安装成功
- 测试聚宽账号
命令行中(黑窗口)运行命令:‘python’进入python交互式运行环境,然后按照官方文档的指引,进行登录验证:
图三 官方登录验证文档
二、获取ETF期权日终行情
按照官方文档中的期权日行情获取指引文档,在上一步打开的python交互式运行环境中尝试获取合约代码为‘10001313.XSHG’的期权合约最近10个交易日的日终行情。
图四 获取期权日行情数据指引文档
按照上述文档依次执行命令:
-‘from jqdatasdk import opt’
-‘q=query(opt.OPT_DAILY_PRICE).filter(opt.OPT_DAILY_PRICE.code=='10001313.XSHG').order_by(opt.OPT_DAILY_PRICE.date.desc()).limit(10)’
-‘df=opt.run_query(q)’
-‘print(df)’
图五 获取ETF期权日终行情
上述结果表明可以使用python命令从聚宽API接口中获取行情数据。
三、数据写入到MySql数据库
下面是通过python代码连接数据库和写入数据的代码:
图六 python连接数据库
- 首先导入连接数据库需要的工具sqlalchemy:
‘from sqlalchemy import create_engine’,如果提示没有对应库,请先使用pip工具进行安装。
- 指定数据库表名、数据库名和数据库连接串
‘TABLE_NAME = ‘opt_daily_price’’
‘DATABASE_SCHEMA = ‘options_data’’
‘DATABASE_CONNECT_STR = 'mysql+pymysql://数据库用户名:数据库密码@云数据库内网地址/数据库名?charset=utf8'’
数据库表名和数据库名需要提前在数据库中创建(可回顾第二章中创建数据库表相关内容)
- 创建数据库连接并写入数据库
‘engine=create_engine(DATABASE_CONNECT_STR)’
‘data_array.to_sql(TABLE_NAME,engine,schema=DATABASE_SCHEMA,if_exists='append',index=F alse,index_label=False)’
其中,data_array是需要写入的数据。完整的python连接mysql数据库的文档可参考:https://zhuanlan.zhihu.com/p/72347359
- 下载完整python代码并修改运行
本节的python代码下载链接:https://pan.baidu.com/s/1Y-73ORHA6iKQvuDuQy6VYg 密码:bk08
下载python代码进行修改,替换掉代码中用户名、密码、数据库地址等信息后将脚本保存到自己的阿里云服务器上。在服务器本机创建bat脚本调用python脚本,bat脚本内容为:
python C:DataCrawlerCodeget_option_daily_price.py 510050.XSHG
(关于‘如何新建bat脚本’请自行百度学习)上面bat命令中的目录C:DataCrawlerCode为python脚本实际所在的文件目录,请根据自己实际情况替换。
双击bat脚本即可自动从聚宽api中下载当日所有以510050.XSHG为标的的ETF期权合约日终行情数据。在Windows计划任务中创建定时任务每日定时自动运行该bat脚本即可实现每日自动爬取期权合约数据至你的云数据库。
若需要补充某天(如2020年1月1日)的历史数据只需稍微修改上述bat脚本为:
python C:DataCrawlerCodeget_option_daily_price.py 510050.XSHG 2020-01-01
上述命令也可以直接在命令行窗口(黑窗口)中‘回车’运行。
四、Superset中访问数据库
登录superset平台进入【source】-【database】数据库连接配置界面。
图七 superset数据库连接配置
点击➕号新建数据库连接
图八 新建数据库连接
配置数据库连接,其中URI是mysql数据库连接串,标准结构为:‘mysql://用户名:密码@数据库内网地址/数据库名?charset=utf8’,替换其中的用户名、密码、数据库内网地址和数据库名为你自己的即可(可回顾第二章‘创建数据库表’相关内容)。
图九 数据库连接配置
五、下期预告
介绍国内ETF期权合约基本知识和属性。
六、课后作业
需要说明的是国内ETF期权目前只有三个标的,分别为‘华夏上证50ETF(510050.XSHG),华泰柏瑞沪深300ETF(510300.XSHG),嘉实沪深300ETF(159919.XSHE)’,括号内为ETF基金的代码,其中XSHG表示上交所,XSHE代表深交所,本文后续所有数据分析案例均使用上述三个品种的ETF期权合约交易数据进行。
请参照上面下载的脚本开发python脚本,并创建定时任务,将聚宽官方文档中的其他期权数据每日自动下载到云数据库以便本课程后续实操,每一个类型的期权数据均需下载510050.XSHG、510300.XSHG、159919.XSHE三个标的的期权合约数据;同时还要下载510050.XSHG、510300.XSHG、159919.XSHE三个ETF基金标的本身的每日收盘价数据。