做家庭影院的有哪些網(wǎng)站網(wǎng)站優(yōu)化方案范文
本文介紹如何使用 akshare 下載國(guó)內(nèi)期貨、股票和指數(shù)的歷史行情數(shù)據(jù)。
Akshare 是一個(gè)豐富的金融數(shù)據(jù)查詢的 Python 庫(kù),提供了大量的金融數(shù)據(jù)接口。本文將詳細(xì)介紹如何使用 Akshare 下載期貨、股票和指數(shù)數(shù)據(jù),并提供完整的代碼示例,以求大家能快速拿到數(shù)據(jù)少走彎路。
期貨合約主要是主力連續(xù)合約的歷史行情數(shù)據(jù)下載,并于進(jìn)行回測(cè)分析使用。
安裝 Akshare
請(qǐng)確保已安裝 Akshare,如下命令安裝:
pip install akshare
了解它的更多數(shù)據(jù),可查看它的文檔:akshare documentation
下載期貨數(shù)據(jù)
我使用 akshare 的重要原因就是它提供了下載期貨的主力或連續(xù)合約的歷史數(shù)據(jù)。開始我想 tushare 實(shí)現(xiàn),映射每天的主力合約并對(duì)應(yīng)獲取其歷史數(shù)據(jù)和拼接,這個(gè)過程本身就比較繁瑣。再就是 tushare 的頻率限制嚴(yán)重,測(cè)試幾次就沒有額度了。
akshare 中的主力和連續(xù)合約的數(shù)據(jù)是從新浪財(cái)經(jīng)下載的,它的 symbol 名稱與標(biāo)準(zhǔn)的是不一致的,不過可以通過函數(shù) futures_display_main_sina
拿到映射關(guān)系。具體我不演示了,我搞了一份表格,便于我平時(shí)查看。
如需查看,可訪問 新浪期貨名稱關(guān)系表格。
有了主力和連續(xù)合約的 symbol 名稱,就可以使用 futures_main_sina
函數(shù)下載歷史數(shù)據(jù)。
data = aks.futures_main_sina(symbol="C0",start_date="20230101"
)
如上的 C0 表示的是玉米主力合約。
我們可以定義一個(gè)函數(shù),參數(shù)接受 symbol 名稱和長(zhǎng)度,輸出結(jié)果其轉(zhuǎn)換為易讀的格式。
def future_history_bar(symbol, length=100):start_date = datetime.now() - timedelta(days=length * 2)data = aks.futures_main_sina(symbol=symbol, start_date=start_date.strftime("%Y%m%d"))data = data.rename(columns={"日期": "date","開盤價(jià)": "open","最高價(jià)": "high","最低價(jià)": "low","收盤價(jià)": "close","成交量": "volume","持倉(cāng)量": "open_interest","動(dòng)態(tài)結(jié)算價(jià)": "settle_price",})data["open"] = data["open"].astype(float)data["high"] = data["high"].astype(float)data["low"] = data["low"].astype(float)data["close"] = data["close"].astype(float)return data.iloc[-length:]
上面的參數(shù)和輸出的定義看個(gè)人習(xí)慣,我比較習(xí)慣這樣的使用方式,便于我計(jì)算指標(biāo)。
下載股票數(shù)據(jù)
A 股股票數(shù)據(jù)可使用 stock_zh_a_hist
下載,它的輸入?yún)?shù)包括股票代碼、周期、復(fù)權(quán)方式和起始日期等參數(shù)。
data = aks.stock_zh_a_hist(symbol="000001",period="daily",adjust="qfq",start_date="20230101"
)
我們的習(xí)慣,一般默認(rèn)前復(fù)權(quán)即可。
為了使用方便,同樣可定義一個(gè)函數(shù),易于使用:
def stock_history_bar(symbol, length=100):start_date = datetime.now() - timedelta(days=length * 2)data = aks.stock_zh_a_hist(symbol=symbol,period="daily",adjust="qfq",start_date=start_date.strftime("%Y%m%d"),)return data.rename(columns={"日期": "date","股票代碼": "symbol","開盤": "open","最高": "high","最低": "low","收盤": "close","成交量": "volume",})[["date","symbol","open","high","low","close","volume",]].iloc[-length:]
我們可以定義一個(gè)函數(shù),下載特定指數(shù)的歷史數(shù)據(jù),并將其轉(zhuǎn)換為更易讀的格式:
下載指數(shù)數(shù)據(jù)
A 股指數(shù)數(shù)據(jù)可通過 index_zh_a_hist
函數(shù)實(shí)現(xiàn)。輸入?yún)?shù)包括指數(shù)代碼、周期和起始日期等參數(shù)。
data = aks.index_zh_a_hist(symbol="000001",period="daily",start_date="20230101",end_date="20231231"
)
將其實(shí)現(xiàn)為 history_bar 函數(shù)的形式,便于我的使用。如下所示:
def index_history_bar(symbol, length=100):start_date = (datetime.now() - timedelta(days=length * 2)).strftime("%Y%m%d")end_date = datetime.now().strftime("%Y%m%d")data = aks.index_zh_a_hist(symbol=symbol,period="daily",start_date=start_date,end_date=end_date,)return data.rename(columns={"日期": "date","開盤": "open","最高": "high","最低": "low","收盤": "close","成交量": "volume",})[["date","open","high","low","close","volume",]].iloc[-length:]
現(xiàn)在,我們就已經(jīng)有了三種不同交易品種的歷史數(shù)據(jù)獲取方法。
主函數(shù)
最后,還可以定義一個(gè)主函數(shù),根據(jù)輸入的類型下載相應(yīng)的歷史數(shù)據(jù):
def history_bar(symbol, length=100, equity_type="stock"):if equity_type == "stock":return stock_history_bar(symbol, length=length)elif equity_type == "future":return future_history_bar(symbol, length=length)elif equity_type == "index":return index_history_bar(symbol, length=length)else:raise ValueError(f"Unsupported equity type: {equity_type}")
現(xiàn)在,是不是使用起來就非常方便了。
示例使用
通過以下示例演示如何調(diào)用這些函數(shù)來獲取不同品種的歷史行情數(shù)據(jù):
獲取上證數(shù)據(jù)數(shù)據(jù):
symbol = "000001" # 上證指數(shù)
length = 100
equity_type = "index"
data = history_bar(symbol, length, equity_type)
print(data)
獲取平安銀行數(shù)據(jù):
symbol = "000001" # 平安銀行
length = 100
equity_type = "stock"
data = history_bar(symbol, length, equity_type)
print(data)
獲取甲醇行情數(shù)據(jù):
symbol = "MA0" # 甲醇主連
length = 100
equity_type = "stock"
data = history_bar(symbol, length, equity_type)
print(data)
通過以上代碼,現(xiàn)在就有了輕松下載股票、指數(shù)和期貨歷史數(shù)據(jù)的能力。這為數(shù)據(jù)分析提供了有力的支持。
完成代碼請(qǐng)查看 hist_data.py。
希望本文對(duì)您有所幫助。如果有任何問題或建議,歡迎隨時(shí)聯(lián)系我。