本期目标:

从聚宽数据API中获取期权行情数据并写入到云数据库(MySql)中,通过superset访问存储在数据库中的数据。

本期导读:

l 聚宽金融数据API

l 获取ETF期权日终行情

l 数据写入到MySql数据库

l Superset中访问数据库

l 下节预告

一、 聚宽金融数据API

聚宽量化平台(https://www.joinquant.com/help/api/help?name=JQData)提供了为期一年的免费数据使用权限,注册用户每天可以免费提取100万条数据。

l 首先根据官网的指引进行用户注册和登录并提交试用申请,请参考如下文档:

图一  聚宽api官方文档

l 参考聚宽文档中的‘如何安装使用JQData’进行环境配置。登录你的阿里云服务器,进入命令行工具(黑窗口),运行命令:‘pip install jqdatasdk’,进行聚宽API接口的安装,安装完成后输入命令:‘pip list’查看是否安装成功。

图二  查看聚宽数据接口是否安装成功

l 测试聚宽账号

命令行中(黑窗口)运行命令:‘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连接数据库

l 首先导入连接数据库需要的工具sqlalchemy:

‘from sqlalchemy import create_engine’,如果提示没有对应库,请先使用pip工具进行安装。

l 指定数据库表名、数据库名和数据库连接串

‘TABLE_NAME = ‘opt_daily_price’’

‘DATABASE_SCHEMA = ‘options_data’’

‘DATABASE_CONNECT_STR = 'mysql+pymysql://数据库用户名:数据库密码@云数据库内网地址/数据库名?charset=utf8'’

数据库表名和数据库名需要提前在数据库中创建(可回顾第二章中创建数据库表相关内容)

l 创建数据库连接并写入数据库

‘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

l 下载完整python代码并修改运行

本节的python代码下载链接: https://pan.baidu.com/s/1UgRNIuPFsaNtB9DHdReWLw 提取码: jn4k 。

下载python代码进行修改,替换掉代码中用户名、密码、数据库地址等信息后将脚本保存到自己的阿里云服务器上。在服务器本机创建bat脚本调用python脚本,bat脚本内容为:

python C:\DataCrawlerCode\get_option_daily_price.py  510050.XSHG

(关于‘如何新建bat脚本’请自行百度学习)上面bat命令中的目录C:\DataCrawlerCode为python脚本实际所在的文件目录,请根据自己实际情况替换。

双击bat脚本即可自动从聚宽api中下载当日所有以510050.XSHG为标的的ETF期权合约日终行情数据。在Windows计划任务中创建定时任务每日定时自动运行该bat脚本即可实现每日自动爬取期权合约数据至你的云数据库。

若需要补充某天(如2020年1月1日)的历史数据只需稍微修改上述bat脚本为:

python C:\DataCrawlerCode\get_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基金标的本身的每日收盘价数据。本次作业很重要,关系到后续课程中能否顺利进行实操。

图十  其他的期权数据

加关注不迷路:jywh_0001

bat脚本中如何多次键盘输入并判断_第四章: Python脚本获取聚宽(JQData)免费行情数据...相关推荐

  1. bat脚本中如何多次键盘输入并判断_万花筒自动发布信息脚本【操作简单】

    亲,当您本店,请花掉您宝贵两分钟阅读下面两段话和看看下面的演示视频,这是我们多年B2B发帖行业心得和肺腑之言~~同时期待你成为我们的客户,我们好为你B2B推广之路添砖加瓦更上一层楼哦 万花筒自动发布信 ...

  2. bat脚本中如何多次键盘输入并判断_电脑上如何多开微信?PC端多开微信的方法

    相信很多人都有多个微信,尤其是那些工作和生活分的比较开的人士,大家都知道一个电脑和可以登录多个QQ的,但是对于微信却不是这样.当你已经登录一个微信时,再打开微信时会自动弹出当前已经登录的微信窗口.本文 ...

  3. bat脚本中如何多次键盘输入并判断_bat教程[282] @

    古树屋Click to follow us 在批处理(.bat)中行首加@符号的含义是该行命令在执行的时候,不在屏幕上显示命令. 示例1: @pause 结果: 请按任意键继续. . . 示例2: p ...

  4. python中的序列类型数据结构元素的切片_第四章 Python字符串以及(split,rsplit,replace,strip.....)...

    创建 s1 = 'lenovo' s2 = "QF" s3 = """hello lenovo""" s4 = '''h ...

  5. .bat脚本自动yes_第四章: Python脚本获取聚宽(JQData)免费行情数据

    本期目标: 从聚宽数据API中获取期权行情数据并写入到云数据库(MySql)中,通过superset访问存储在数据库中的数据. 本期导读: 聚宽金融数据API 获取ETF期权日终行情 数据写入到MyS ...

  6. python键盘输入数组_python 二维数组切割Python读取键盘输入的2种方法

    Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: 1.raw_input 2.input raw_input函数raw_input() 函数从标准输入读取一个行,并返 ...

  7. java 调用python脚本过程_通过Java调用Python脚本

    在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...

  8. java执行python脚本_通过Java调用Python脚本

    在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...

  9. 解决VsCode中C程序无法键盘输入的问题

    文章目录 一.问题截图 二.解决办法 三.清空控制台 四.控制台乱码 一.问题截图 在OUTPUT窗口里,遇到scanf语句,无法进行键盘输入,问题出在Code Runner的设置 二.解决办法 需要 ...

最新文章

  1. 【入门基础】写给小白看的入门级 Java 基本语法
  2. js/jquery遇到的坑总结
  3. ACM练习 校赛183F:公平的游戏(TLE)【vector不重复添加、删除指定元素、排序】
  4. 解决mysql的乱码问题_完美解决mysql中文乱码的问题
  5. java+redis+lua生成自动增长的ID序列号
  6. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]38.隐蔽信道和侧信道的区别
  7. 简单了解linux,linux简单了解
  8. 解决一个I2C读写问题
  9. 线性代数向量乘法_标量乘法属性1 | 使用Python的线性代数
  10. Xdebug部分配置选项说明
  11. JS执行Promise
  12. F-Stack KNI配置注意事项
  13. laravel order 按时间升序_Cache and Related Part3: Coherence amp; Order
  14. Spring学习笔记之二----基于XML的Spring AOP配置
  15. 【资源导航】我所用到过的工具及下载地址
  16. c语言 宏常量 pi,宏和常量
  17. 硬盘不能进PE的问题与解决
  18. 为什么docker的端口映射需要开启ip转发功能?
  19. Redis的Mster/Slaver
  20. Android 系统权限之SuperSU 模拟器root

热门文章

  1. 用python编程输入三角形的三条边判断是否构成三角形_输入三角形的三条边a,b,c,判断它们能否构成三角形。若能构成三角形,指出是何种三角形....
  2. 学好SEO需要掌握哪些知识要点?
  3. ZYNQ7000 FSBL加载启动代码详解
  4. AI时代,数据工程师必备知识总结
  5. 没想到钱多多的求职之路竟如此艰辛,求大佬指点
  6. EcShop开发手册
  7. 崔岩的笔记——动态时间规整算法(Dynamic Time Warping,DTW)
  8. 武汉星起航跨境电商到底靠不靠谱?亚马逊跨境收款方式有哪些?
  9. HTML中placeholder用法
  10. Dockers 安装