簡單的股票行情演示(二) - AKShare

原文鏈接:簡單的股票行情演示(二) - akshare

一、概述

上一篇文章簡單的股票行情演示(一) - 實時標的數據中講述了從新浪接口抓取免費股票實時行情數據,其中缺點也明顯,缺乏良好的接口說明文檔,不知道可以獲取哪些數據,並且返回數據格式爲字符串,傳輸效率低下,兼容性就更差,後臺數據幾乎沒有擴展性。

本篇文章將介紹一款神奇工具 - 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語言的同學安裝AKShareAKTools應該很容易,就是安裝兩個Python庫,而且這兩個庫對應的官網上也有詳細的安裝說明,這裏僅以作者當時摸索安裝環境時的過程做以簡單說明。

需要使用這兩個庫,首先需要安裝Python環境,AKShare官網推薦的有最低版本,這裏一定要遵守,最開始摸索階段使用了32位的Python版本,搞的好久一直報錯,後來切換爲64位後正常。

  1. 安裝Python 64 3.8.10 版本
  2. pip install AKShare
  3. pip install AKTools
  4. [pip install pyinstaller]打包使用,可以選擇性安裝
  5. [python -m pip --upgrade pip ]升級pip工具使用

環境安裝好之後,通過Python命令即可啓動AKTools服務,如下圖所以,截圖來自官網說明
image

  1. 命令行輸入python -m aktools,按下回車,將會在本地默認啓動一個HTTP服務,IP爲127.0.0.1,端口號爲8080
  2. 使用Postman模擬發送http://127.0.0.1:8080/api/public/stock_zh_a_hist請求,能獲取到數據時代表環境安裝成功

下圖同樣來自AKTools官網,是執行了上述第二步請求A 股日頻率數據-東方財富接口返回的數據
image

測試請求結果能正常返回數據後,說明我們的環境搭建成功,之後只需要安心發送各種數據請求即可。

三、使用總結

1、API文檔

AKShare 快速入門中介紹了大量接口,並且配備有中文說明,可以作爲一個字典快速檢索使用

2、數據字典

AKShare 數據字典主要介紹 AKShare 提供的數據接口的詳細說明,並且每一個Case都做了詳細說明,比如A股-實時行情數據-新浪數據,點開此鏈接後大致說明如下,由於截圖原因不能展示的非常全面,使用時大家可自行去官網查閱所有接口,會使用任何一種語言發起HTTP請求,那配套該庫就可以請求更加多樣化的金融數據。

image

3、效果截圖

如下圖所示,作者在本地搭建好環境後,通過Talend API Tester工具發起的獲取股票5分鐘K線測試請求,圖中右下角爲請求到的數據,爲了展示更多數據,這裏沒有進行Json Pretty展示

image

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線展示、分時圖展示等,敬請期待。。。

四、相關文章

  1. Qt 之股票組件 - 自選股 -- 列表可以拖拽、右鍵常用菜單
  2. Qt 之股票組件 - 股票檢索 -- 支持搜索結果預覽、鼠標、鍵盤操作
  3. 簡單的股票行情演示(一) - 實時標的數據
  4. QCustomplot使用分享(一) 能做什麼事
  5. QCustomplot使用分享(二) 源碼解讀
  6. QCustomplot使用分享(三) 圖
  7. QCustomplot使用分享(四) QCPAbstractItem
  8. QCustomplot使用分享(五) 佈局
  9. QCustomplot使用分享(六) 座標軸和網格線
  10. QCustomplot使用分享(七) 層(完結)

值得一看的優秀文章:

  1. 財聯社-產品展示
  2. 廣聯達-產品展示
  3. Qt定製控件列表
  4. 牛逼哄哄的Qt庫

如果您覺得文章不錯,不妨給個打賞,寫作不易,感謝各位的支持。您的支持是我最大的動力,謝謝!!!




很重要--轉載聲明

  1. 本站文章無特別說明,皆爲原創,版權所有,轉載時請用鏈接的方式,給出原文出處。同時寫上原作者:朝十晚八 or Twowords

  2. 如要轉載,請原文轉載,如在轉載時修改本文,請事先告知,謝絕在轉載時通過修改本文達到有利於轉載者的目的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章