1. 程式人生 > 實用技巧 >#IB TWS程式設計手記——00.TWS API準備工作

#IB TWS程式設計手記——00.TWS API準備工作

IB TWS是什麼?

IB TWS是電子券商IB的量化交易API,是開發、研究自動量化交易演算法的重要工具。關注過我的朋友,可能知道之前我曾經翻譯過IB API的相關文件,但是由於平日工作實在太忙,這個工作完成1/3就鴿了,實在對不住各位朋友。

後來我想了想,不如把怎麼使用IB API的方法直接告訴有興趣的朋友,一些更深入的方法技術,可以在你掌握相關知識後,自己主動查詢IB的開發文件,況且IB新一代的API更新很快,如果單純的翻譯開發文件,實在是用愛發電的專案。

盈透證券TWS系統

除了IB以外,我還有什麼工具可以當作金融分析工具?

IB API的功能很強大,但是需要你去他們網站上開個戶。雖然現在也能直接申請Paper Account,但是功能上是有些限制的。除此之外呢,對於Python開發者來說,則有很多開源工具可用,不過我分析過他們的資料來源,國內A股市場基本上是從網易和新浪扒來的,而國際市場的金融資料則是來自雅虎。

不知道同花順有沒有相關的API,有興趣的可以查查。但是我個人覺得,無論從時效性,功能性,完整性來看,直接從電子券商IB那裡拿資料是最有價值,和有用的。當然需要處理的工作量也不輕鬆。

IB支援哪些語言?

目前來看,IB支援的語言包含了主流的幾大語言,基本囊括TIOBE前6的語言,也就是說,至少80%的程式設計師都可以用他們熟悉的一兩種語言來開發屬於自己的量化交易程式。

目前支援的語言有Python/C/CPP/Java/C#/VB,另外在v9.72版本的API上,又增加了Excel的支援(話說這是什麼鬼?)我個人比較支援大家用C#或者Java作為開發語言,不過如果未來你需要增加比如說CUDA的運算支援,tensflow的智慧支援,使用C#則會更加容易一些。

當然,如果你不追求高併發,那麼直接使用Python是最方便的。

前期準備工作

想要使用TWS,需要先去冊盈透證券的官網註冊投資者賬號,並且在賬號開通後三個月內向你的投資人賬號打款以啟用賬號,否則註冊了賬號而不打款,三個月後賬戶就會被登出掉,也意味著你不能使用TWS進行下一步的開發了。

當然,據我所知,比如雪球,還有其他一些國內的二級券商是有附帶提供IB開戶的功能。如果你身邊有某個好朋友他已經開了IB的賬戶,那麼你可以請他幫你開通一個Paper Account,也就是,模擬賬戶,可以使用很多與正常的交易賬戶一樣的功能,但不會影響到正常賬戶的資金安全。

IB官網

註冊了賬戶、打入資金後,就可以在盈透證券的官網下載TWS交易客戶端,同時還有IB API。IB API目前提供有Linux,Windows,MacOS三個系統的版本,根據你自己擅長的系統和語言,選擇對應的API進行下載就行。

我推薦大家建立一個虛擬機器,把TWS客戶端 下載到Linux或者Mac上,根據我的經驗,放在Windows上因為安全策略的問題,會有一定機率導致你的程式碼無法正常執行,而本地客戶端,既可以選擇Windows,也可以選擇Linux或者Mac。

如果你是Mac使用者這個會變得無比簡單。

選擇的程式語言支援,我個人推薦 C#.NET 會十分方便。儘管筆者本人也會Java,Python等語言技術,但是C#真是一種用起來方便無比而且十分強大迅速的語言。

另一方面,因為API命名與使用方法基本一致,所以也就無所謂語言的優劣,對於你個人來說只要方便就好。

通訊前準備

使用Windows程式設計,需要準備的是Visual Studio或者支援相關語言的開發工具和IDE,因為筆者用C#做這個專案,所以選擇了Visual Studio。另一方面,因為Windows系統的限制,需要提前準備好程式的通訊埠,並在防火牆、防毒軟體設定為開啟。

然後啟動你的TWS,輸入使用者名稱和密碼,進入到主介面後,在Configuration裡,找到API這一項。

一定要記得勾選“Enable ActiveX and Socket Clients”這個選項,此外在下方的“Trusted IPs”,要注意是否允許本地連線已經打開了,這個勾選後,預設127.0.0.1可以直接訪問TWS,而其他地址,需要通過“Create”命令,加入到TWS的白名單裡。

EnableActiveX

如何程式設計

請看我的下一篇文章《01.TWS建立基礎連線》