市場上存在為數衆多的金融API,這些API中用python3來編寫的也有相當多的數量。在學習了一定python3的基礎知識之後,通過閱讀他人開發的API文檔及源代碼可以幫助一個初學者向成熟發展。然而,金融類API涉及的内容包羅萬象,通常一個金融交易類的API可能涉及的内容包括:連接配接子產品、交易子產品、賬戶子產品、資訊擷取子產品等等。一個做的非常成熟的金融交易類API當屬盈透(Interactive Brokers,或稱IB)的API了。其API的開發主力是Java、C#等,而Python3的支援是最近半年時間才加入進來的。

各位打開看看左邊的樹形結構目錄就知道了,這個開發文檔包含的内容非常多。我已經将文檔中除了類(class)的部分英文全部都機翻成了中文,這部分文字加上代碼的總長度已經達到了幾百頁。可能你也聽說過盈透是非常适合做程式化交易的平台,但是任何一個Python3的初學者剛結束入門的課程就來看這樣長的API文檔,再加上這個API對很多部分的使用沒有寫的很透徹,給小白造成的傷害絕對是暴擊級别。
我曾經也在網上找如何去學習使用Python3寫的API文檔的源代碼,但是卻沒有一個比較完整的教程。事實上,沒有這類教程也是可以了解的,畢竟讀文檔讀代碼這樣的事情,本身就是讀的多了就懂了。但自己内心還是放不下,畢竟我走過的路其他入門Python3的朋友們也可能會遇到,是以,還是把我學習使用API的過程放到網上來,如果能起到抛磚引玉的作用,能對大家做出些貢獻,我也就知足了。
那麼适合于剛到達Python3入門級的朋友查閱的金融類API有哪些呢?其實這也不是很好尋找……事實上,一般金融類API的文檔和源代碼的閱讀量都比較大,大多都還是英文材料,考慮到英文材料過多對入門幫助不是很大,而且不一定适用于國内的情況,于是這裡我決定選取easytrader這個項目來作為引領各位Python3初學者學習使用API的起點。這一關過了,後面類似IB等較大規模的項目大家才能逐漸看懂,大家說是不是呢?
easytrader項目,由shidenggui開發并釋出到其個人GitHub頁面上。
shidenggui的GitHub頁面連結:https://github.com/shidenggui 如果無法連結,大家請自行百度連結GitHub方法。
在首頁界面上就可以看到easytrader這個項目。事實上,他還制作了更多的項目,點選頁面上的Repositories(項目倉庫)就能夠看到他做的更多内容。通過檢視其項目倉庫,我們可以發現有好些名稱開頭為easy的,下面标注着python的。這大緻說明這些項目是使用python編寫的(2還是3需要看他的代碼),并且與easytrader項目可能存在一定的關聯。
在這裡,我就把這些easy開頭用Python寫的項目統稱為easytrader家族系列子產品(事實上easytrader子產品不一定會用到下面的全部子產品,這是我個人的稱呼方式)。這些子產品包括:
easyhistory:用于擷取維護股票的曆史資料
easyctp:用python連接配接ctp交易
easyutils:希望能提供一些股市常用的接口,減少重複勞動
easyquant:股票量化架構,支援行情擷取以及交易
easytrader:提供銀河/國金/華泰用戶端/同花順用戶端/雪球的基金、股票自動程式化交易以及自動打新,支援跟蹤 joinquant (聚寬)/ricequant(米筐) 模拟交易 和 實盤雪球組合, 量化交易元件
easyquotation:實時擷取新浪 / 騰訊 的免費股票行情 / 集思路的分級基金行情
我一開始也不知道這些項目是做什麼用的。不過好在這些項目都有注釋文字,是以就列上來了。
我們随便打開其中的一個。比如easyquotation。打開之後,看到好些文檔和檔案夾的朋友可能就懵了:這麼多東西,都是什麼鬼?我該咋用這個東西啊?
别着急,我之後的文章會慢慢給大家說明的。事實上,這個項目裡的檔案算是比較少的了。大家可以先打開這個文檔中的requirements.txt文檔,打開的方法就是點選這個文字連結就可以了。這個文檔記載的是如果想要使用這個項目子產品,必須安裝這個文檔裡面要求的子產品。這個文檔裡面提到了哪些内容呢:分别是six、requests、yarl、aiohttp>=1.1.1和easyutils。第四個内容說明必須安裝1.1.1版本以上的aiohttp子產品,而第五個部分說明要應用easyquotation子產品就必須要導入easyutils這個easytrader家族系列子子產品。這裡面有些子產品我也從來沒用過,我也得上網查。是以看到不認識的子產品的時候不要覺得完蛋了神馬的。
事實上,easytrader家族系列子產品都是API項目,也就是你可以通過這些子產品中提供的函數或類去擷取、執行一些資訊,而這些函數或類就被視為接口。可能我這麼講不是很恰當,但是能夠了解大緻意思就可以了。
如果你嘗試打開這個家族系列的各個項目網頁,你會發現好幾個子產品都用了easyutils這個子產品,而easyutils子產品的結構是非常簡潔和清晰的。是以,我們下一篇就來分析easyutils這個子產品。
#如果各位初學者還不了解Python3中的函數(定義和基本函數編寫及應用)或者類(定義和基本類的編寫及應用),可以再去補一下課,網上資料非常多。#不需要各位了解的非常深入(我看到有些人已經在糾結裝飾器了),咱們在具體源代碼遇到的時候可以再作說明或提示。