一、概述
上一篇文章簡單的股票行情演示(一) - 實時標的數據中講述了從新浪接口抓取免費股票實時行情數據,其中缺點也明顯,缺乏良好的接口說明文檔,不知道可以獲取哪些數據,並且返回數據格式爲字符串,傳輸效率低下,兼容性就更差,後臺數據幾乎沒有擴展性。
本篇文章將介紹一款神奇工具 - AKShare,它是專門用來獲取金融行情數據使用的,基於該庫也衍生出了不少優秀框架,其中Backtrader就是其中一款優秀的量化投資開源回測和交易框架。AKShare本身由Python
腳本編寫,爲了突破Python
語言的限制,該庫還專門配套發佈了專用的AKTools工具。
AKTools 是一款用於快速搭建 AKShare HTTP API 的工具,通過 AKTools 可以利用一行命令來啓動 HTTP 服務,從而讓原本專屬服務於 Python 用戶的開源財經數據接口庫 AKShare 的使用 突破編程語言的限制。無論您使用的是 C/C++、Java、Go、Ruby、PHP、JavaScript、R、Matlab、Stata 等編程語言或軟件都可以快速、輕鬆獲取財經數據,助力您更好地展開研究和開發工作。
上述內容是引用子AKTools官方文檔中對AKTools的一段描述,意思簡單易懂,說白了就是在本地啓動了一套HTTP服務,任何語言都可以對該本地服務發起數據請求,然後由該服務進行互聯網請求,請求成功後在把數據回覆給本地請求者,完全突破了Python
語言的限制,最重要的是該庫返回的數據基本都是json格式,可擴展性強,並且文檔比較完善。
本篇文章的內容比較簡單,主要是爲後續行情數據來源提供強大支持,有了AKShare提供的數據源後,我們接下來就只需要關心C++側的數據請求、存儲、轉發和一些UI效果展示。接下來的內容將圍繞AKShare環境搭建和筆者使用過程中總結的一些小經驗進行展開分享。
二、環境搭建
熟悉Python
語言的同學安裝AKShare和AKTools應該很容易,就是安裝兩個Python
庫,而且這兩個庫對應的官網上也有詳細的安裝說明,這裏僅以作者當時摸索安裝環境時的過程做以簡單說明。
需要使用這兩個庫,首先需要安裝Python
環境,AKShare官網推薦的有最低版本,這裏一定要遵守,最開始摸索階段使用了32位的Python
版本,搞的好久一直報錯,後來切換爲64位後正常。
- 安裝Python 64 3.8.10 版本
- pip install AKShare
- pip install AKTools
- [pip install pyinstaller]打包使用,可以選擇性安裝
- [python -m pip --upgrade pip ]升級pip工具使用
環境安裝好之後,通過Python
命令即可啓動AKTools服務,如下圖所以,截圖來自官網說明
- 命令行輸入
python -m aktools
,按下回車,將會在本地默認啓動一個HTTP服務,IP爲127.0.0.1
,端口號爲8080 - 使用Postman模擬發送
http://127.0.0.1:8080/api/public/stock_zh_a_hist
請求,能獲取到數據時代表環境安裝成功
下圖同樣來自AKTools官網,是執行了上述第二步請求A 股日頻率數據-東方財富
接口返回的數據
測試請求結果能正常返回數據後,說明我們的環境搭建成功,之後只需要安心發送各種數據請求即可。
三、使用總結
1、API文檔
AKShare 快速入門中介紹了大量接口,並且配備有中文說明,可以作爲一個字典快速檢索使用
2、數據字典
AKShare 數據字典主要介紹 AKShare 提供的數據接口的詳細說明,並且每一個Case都做了詳細說明,比如A股-實時行情數據-新浪數據,點開此鏈接後大致說明如下,由於截圖原因不能展示的非常全面,使用時大家可自行去官網查閱所有接口,會使用任何一種語言發起HTTP請求,那配套該庫就可以請求更加多樣化的金融數據。
3、效果截圖
如下圖所示,作者在本地搭建好環境後,通過Talend API Tester
工具發起的獲取股票5分鐘K線測試請求,圖中右下角爲請求到的數據,爲了展示更多數據,這裏沒有進行Json Pretty展示
4、後臺服務
對於要正式使用該模式獲取數據的同學來說,每次啓動該服務後,都會有一個CMD命令行窗口存在,影響美觀的同時還有可能不小心誤操作給關掉,對於Linux電腦來說這應該不是問題,據說命令行後加一個&
符號就可以後臺執行,對於Windows電腦的作者來說表示很尷尬,不過我一直相信80%的問題都可以通過百度解決,果然辦法還真有,下面我就簡單貼上命令行代碼,這也是從其他的coder那裏拷貝而來。
@ECHO OFF
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
start /b python -m aktools --host 127.0.0.2 --port 1920
把如上腳本放入一個Bat腳本中,通過雙擊腳本啓動的HTTP服務,將會在後臺運行,此時在也沒有顯眼的Cmd窗口打擾。
後臺進程啓動後,怎麼殺死呢?作者這裏偷了一個爛,使用了Windows
通用殺死進程的辦法,直接幹掉Python.exe
可執行程序,不過這個方法缺點也比較明顯,會殺死所有的Python進程,對於寫C++的我足夠啦。
taskkill /im python.exe /f
希望區分進程名的同學可以自行研究哈,或者有啥好的辦法也可以進行留言,或者私信,感激不盡。之前在StackFlow
上有一個同學提供了一種思路,就是啓動服務的時候使用不同的Python.exe
,意思就是在Python
安裝目錄拷貝多個Python.exe
,然後命名成不同的名稱,比如啓動AKTools
可以命名爲AKToolsPython.exe
,這樣就可以和其他進程區分。
此篇文章主要講述了數據源獲取方式,後續還會有更多文章出來,比如K線展示、分時圖展示等,敬請期待。。。
四、相關文章
- Qt 之股票組件 - 自選股 -- 列表可以拖拽、右鍵常用菜單
- Qt 之股票組件 - 股票檢索 -- 支持搜索結果預覽、鼠標、鍵盤操作
- 簡單的股票行情演示(一) - 實時標的數據
- QCustomplot使用分享(一) 能做什麼事
- QCustomplot使用分享(二) 源碼解讀
- QCustomplot使用分享(三) 圖
- QCustomplot使用分享(四) QCPAbstractItem
- QCustomplot使用分享(五) 佈局
- QCustomplot使用分享(六) 座標軸和網格線
- QCustomplot使用分享(七) 層(完結)
值得一看的優秀文章:
很重要--轉載聲明
-
本站文章無特別說明,皆爲原創,版權所有,轉載時請用鏈接的方式,給出原文出處。同時寫上原作者:朝十晚八 or Twowords
-
如要轉載,請原文轉載,如在轉載時修改本文,請事先告知,謝絕在轉載時通過修改本文達到有利於轉載者的目的。