如何使用tushare獲取數據到MySQL搭建自己的量化分析數據庫

<code>量化交易的分析基礎是數據,包括股票歷史交易數據、上市公司基本面數據、宏觀和行業數據等。隨著信息流量的日益膨脹,學會獲取、查詢和加工數據信息變得越來越重要。對於鼓搗量化交易的人來說,怎麼能說不會玩數據庫呢?目前常用的開源(免費)數據庫有MySQL、Postgresql 、Mongodb 和 SQLite (Python自帶),在2018-2019年DB-Engines 排行榜上位居前十(見下圖),可見其使用量和受歡迎程度較高。這幾個數據庫各有自己的特點和適用環境,關於該學習哪一個或如何學習網上有很多相關資料。本文主要為大家簡單介紹如何使用 Python 操作 mysql 數據庫(其他數據庫類似),利用  pandas 的 dataframe 實現與mysql的交互,一步步搭建自己的量化分析數據庫。/<code> 
如何使用tushare獲取數據到MySQL搭建自己的量化分析數據庫

<code>mysql數據庫安裝
建立數據庫tushare_db
這個我就不介紹了,網上很多教程,直接開始/<code>
<code>首先,使用 tushare 獲取3000多隻股票行情數據到本地,直接使用pandas的to_sql函數,將數據存入本地mysql數據庫中,方便進一步查詢和操作。/<code>
<code>#先引入需要用到的庫
import tushare as ts
import pandas as pd
import numpy as np
from sqlalchemy import create_engine
#連接數據庫
engine = create_engine('mysql+pymysql://root:123456@localhost/tushare_db')
#設置token(大家去tushare上免費註冊就可以獲取了)
#tushare的註冊地址 https://tushare.pro/register?reg=232583
token='自己的token'
pro = ts.pro_api(token)/<code>
<code>#數據獲取函數,默認時間可以隨時改動
#如果報錯,把tushare升級到最新
def get_data(code,start='20200101',end='20200310'):
#使用pro_bar通用行情接口
df=ts.pro_bar(ts_code=code, adj='qfq', start_date=start, end_date=end)
return df
#交易代碼獲取函數,獲取最新交易日的代碼
#獲取當前交易日最新的股票代碼和簡稱
def get_code():
codes = pro.stock_basic(list_status='L').ts_code.values
return codes

def insert_sql(data,db_name,if_exists='append'):
#使用try...except..continue避免出現錯誤,運行崩潰
try:
data.to_sql(db_name,engine,index=False,if_exists=if_exists)
# print(code+'寫入數據庫成功')
except:
print(code+'error寫入出錯')/<code>
<code>我們總共建立了3個函數,第一個時獲取行情數據,第二個時獲取股票代碼,第三個時插入數據庫/<code>
<code>#下載20200101-20200310數據並插入數據庫stock_data
#此步驟比較耗費時間,大致30-35分鐘左右
#調取說明:基礎積分每分鐘內最多調取500次,每次5000條數據。
for code in get_code():
data=get_data(code)
# print(data)
insert_sql(data,'stock_data')

#更新2019年和以前的數據把上面的日期改下就行了。

#接下來查詢下2020年3月10日的收盤數據
df2=pd.read_sql("select * from stock_data where trade_date='20200310' ",engine)
print(df2)/<code>
如何使用tushare獲取數據到MySQL搭建自己的量化分析數據庫

<code>#今天先講到這裡,下次講解通過下載的數據如何可視化分析。歡迎大家關注/<code>


分享到:


相關文章: