.bat脚本自动yes_第四章: Python脚本获取聚宽(JQData)免费行情数据
本期目標:
從聚寬數據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/1PwrHlCaqg2ukllzCCID50w 提取碼: t53j。
下載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基金標的本身的每日收盤價數據。本次作業很重要,關系到后續課程中能否順利進行實操。
圖十 其他的期權數據
加關注不迷路:jywh_0001
總結
以上是生活随笔為你收集整理的.bat脚本自动yes_第四章: Python脚本获取聚宽(JQData)免费行情数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python代码写入方式_【Python
- 下一篇: kfold_机器学习gridsearch