金融量化分析&可視化|一行代碼獲取股票、基金數(shù)據(jù),并繪制K線圖
大家好,我是老表,今天這篇文章和大家分享一下如何利用Python獲取股票、基金數(shù)據(jù),并進(jìn)行可視化,為金融分析&可視化先導(dǎo)篇,歡迎大家學(xué)習(xí)、點(diǎn)贊、收藏支持。
一、基礎(chǔ)準(zhǔn)備
環(huán)境:python 3.7+ 需要安裝第三方模塊:mplfinance、akshare 運(yùn)行編輯器:jupyter notebook
二、動(dòng)手動(dòng)腦
2.1 環(huán)境準(zhǔn)備
首先需要你的電腦安裝好了Python環(huán)境,并且安裝好了Python開發(fā)工具。
如果你還沒(méi)有安裝,可以參考以下文章:
如果僅用Python來(lái)處理數(shù)據(jù)、爬蟲、數(shù)據(jù)分析或者自動(dòng)化腳本、機(jī)器學(xué)習(xí)等,建議使用Python基礎(chǔ)環(huán)境+jupyter即可,安裝使用參考Windows/Mac 安裝、使用Python環(huán)境+jupyter notebook
如果想利用Python進(jìn)行web項(xiàng)目開發(fā)等,建議使用Python基礎(chǔ)環(huán)境+Pycharm,安裝使用參考 :Windows下安裝、使用Pycharm教程,這下全了 和 Mac下玩轉(zhuǎn)Python-安裝&使用Python/PyCharm 。
2.2 模塊安裝
本次實(shí)驗(yàn)是在jupyter notebook上進(jìn)行,默認(rèn)你已經(jīng)安裝好了Python基本環(huán)境和jupyter,如果沒(méi)有安裝可以看上面的環(huán)境安裝部分。
首先打開終端,輸入:
jupyter notebook
即可進(jìn)入jupyter,會(huì)自動(dòng)連接服務(wù)器,并跳轉(zhuǎn)到網(wǎng)頁(yè),新建一個(gè)python文件。
給文件重命名,容易區(qū)分:
在代碼塊中輸入以下指令并運(yùn)行,即可安裝mplfinance(金融數(shù)據(jù)可視化,基于matplotlibe和pandas)和akshare(金融數(shù)據(jù)獲取模塊):
!pip3 install mplfinance --user
!pip3 install akshare --user
2.3 模塊基本介紹與使用
2.3.1 mplfinance
基本介紹:用于金融數(shù)據(jù)可視化和可視化分析的 matplotlib 實(shí)用程序(接口),基于matplotlibe開發(fā),并且與pandas的DataFrame數(shù)據(jù)有很好的結(jié)合。
項(xiàng)目地址:https://github.com/matplotlib/mplfinance
基本使用方法:
import mplfinance as mpf
mpf.plot(data)
其中 data數(shù)據(jù)是一個(gè)DataFrame數(shù)據(jù)類型,必須包含:Open, High, Low and Close這四列,并且有時(shí)間日期索引(類型為:DatetimeIndex)。
接下來(lái),我們虛擬一個(gè)數(shù)據(jù)來(lái)看看效果吧:
import mplfinance as mpf
import pandas as pd
# 創(chuàng)建日期索引
index_date = pd.DatetimeIndex(['20210906', '20210907', '20210908', '20210909'])
# 隨便創(chuàng)建數(shù)據(jù)
data = pd.DataFrame({
'Open': [1, 2, 3, 4],
'High': [2, 3, 4, 5],
'Low' : [0.5, 1, 2, 2],
'Close': [2, 3, 4, 3]
}, index=index_date)
# 調(diào)用plot函數(shù) 進(jìn)行繪圖
mpf.plot(data)
我們看到,現(xiàn)在根據(jù)模擬數(shù)據(jù)我們簡(jiǎn)單繪制了一個(gè)簡(jiǎn)單的OHLC線條。
type參數(shù)使用,讓繪圖更加精彩:
mpf.plot(data,type='candle')

mpf.plot(data,type='line')
type還可以為:renko、pnf。
mav參數(shù)可以添加移動(dòng)平均線,更好的看趨勢(shì)。
mpf.plot(data, type='candle', mav=2)
還可以添加多條移動(dòng)平均線:
mpf.plot(data, type='candle', mav=(2, 3))
更多使用方法,后面分章節(jié)給大家介紹,也歡迎大家去github地址自行學(xué)習(xí),和我以及簡(jiǎn)說(shuō)Python學(xué)習(xí)群友進(jìn)行交流。
2.3.2 akshare
基本介紹:AKShare 是一個(gè)優(yōu)雅簡(jiǎn)單的 Python 金融數(shù)據(jù)接口庫(kù),你可以利用這個(gè)庫(kù)輕松獲取到金融財(cái)經(jīng)數(shù)據(jù)。
項(xiàng)目地址:https://github.com/jindaxiang/akshare/ 基本使用方法:
獲取指數(shù)數(shù)據(jù)
import akshare as ak
# 獲取上證指數(shù)每日的變化數(shù)據(jù) OHLC
sz_index = ak.stock_zh_index_daily(symbol="sh000001")
這樣就可以獲取到上證指數(shù)所有歷史數(shù)據(jù)啦~
獲取A股數(shù)據(jù)
# 獲取茅臺(tái)股票每日的變化數(shù)據(jù) 采用前復(fù)權(quán)方式計(jì)算(關(guān)于復(fù)權(quán)計(jì)算更多知識(shí)以后分享,大家可以網(wǎng)絡(luò)查找相關(guān)資料)
stock_zh_mt_hist_df = ak.stock_zh_a_hist(symbol="600519", period="daily", start_date="20170301", end_date='20210913', adjust="qfq")

獲取港股數(shù)據(jù)
# 獲取港股騰訊股票歷史數(shù)據(jù)
stock_hk_tx_hist_df = ak.stock_hk_hist(symbol="00700", start_date="20170301", end_date="20210913", adjust="qfq")

獲取美股數(shù)據(jù)
# 獲取美股蘋果公司歷史股票數(shù)據(jù)
stock_us_apple_hist_df = ak.stock_us_hist(symbol='105.AAPL', start_date="20100101", end_date="20210913", adjust="qfq")

獲取基金數(shù)據(jù)
# 獲取易方達(dá)藍(lán)籌從發(fā)行到現(xiàn)在的凈值數(shù)據(jù)
yfd_fund = ak.fund_em_open_fund_info(fund="005827", indicator="單位凈值走勢(shì)")
更多使用方法,后面分章節(jié)給大家介紹,也歡迎大家去github地址自行學(xué)習(xí),和我以及簡(jiǎn)說(shuō)Python學(xué)習(xí)群友進(jìn)行交流。
來(lái),操作
按上面方法,我們獲取上證指數(shù)數(shù)據(jù)后,選取從2020-01-01到現(xiàn)在的數(shù)據(jù)進(jìn)行可視化,然后在進(jìn)行細(xì)分可視化,并選擇不同的移動(dòng)平均線。
2020-01-01-'2021-09-13,mav=(200, 300, 350)
import akshare as ak
import mplfinance as mpf
import pandas as pd
# 獲取上證指數(shù)每日的變化數(shù)據(jù) OHLC
sz_index = ak.stock_zh_index_daily(symbol="sh000001")
data1 = sz_index.loc['2020-01-01 00:00:00+00:00':'2021-09-13 00:00:00+00:00']
mpf.plot(data1, type='candle', mav=(200, 300, 350), volume=True)

2021-01-01-'2021-09-13,mav=(30, 60, 120)
data2 = sz_index.loc['2021-01-01 00:00:00+00:00':'2021-09-13 00:00:00+00:00']
mpf.plot(data2, type='candle', mav=(30, 60, 120), volume=True)

2021-04-01-'2021-09-13,mav=(5, 10, 20)
data3 = sz_index.loc['2021-04-01 00:00:00+00:00':'2021-09-13 00:00:00+00:00']
mpf.plot(data3, type='candle', mav=(5, 10, 20), volume=True)

今天就到這里啦,如果大家覺(jué)得文章不錯(cuò),記得點(diǎn)個(gè)贊哈~金融分析&可視化系列會(huì)繼續(xù),本文全部源碼還在整理中,大家可以先加老表微信,備注:金融分析,加入金融分析&可視化交流群,后面代碼整理好了會(huì)第一時(shí)間群內(nèi)公布獲取方法。
點(diǎn)贊+留言+轉(zhuǎn)發(fā),就是對(duì)我最大的支持啦~
