目錄
Python IB API (Native) 介紹
它是一項允許您通過Python代碼自動交易的功能。
用更專業的術語來說,它是一種通信協議,允許與盈透證券(IB)伺服器和自定義軟體應用程式交換資訊。作為橋樑,該API允許從自定義軟體或腳本發送訂單,接收即時或歷史數據以及其他幾個有用的應用程式。

Python IB API (Native) 的好處
如果您正在閱讀本指南,您可能已經完成了研究,並得出結論,盈透證券(IB)有很好的在線評論。該經紀商以具有競爭力的傭金率和廣泛的市場而聞名。
學習使用Python原生API可以讓你更進一步。以下是您可以完成的一些操作:
- 自動交易– 無論您是在尋找完全自動化還是半自動化的解決方案,API都是將您的自動化腳本與盈透證券連接的基礎
- 創建自定義交易終端– 盈透證券的TWS非常棒,並且具有大量功能。但是,如果您正在尋找替代解決方案來進行交易,則可以使用API輕鬆構建自定義終端。
- 收集歷史資料– 存取過去的資料是大多數自動交易系統的起點。IB提供流數據,並且對其API速率限制非常慷慨。
- 輕鬆創建自定義指標– TWS具有廣泛使用的標準內置技術指標。但是,如果您希望自定義自己的指標,則API是要走的路。此外,Python以其龐大的庫而聞名。例如,如果您對機器學習或情感分析感興趣,該API提供了一個橋樑,可以連接到Python中為這些領域提供的驚人庫。
- 自定義警報和通知– 您是否需要 TWS 無法滿足的警報?你很有可能可以在Python上做到這一點。
Python IB API (Native) 的不足之處
在某些情況下,有更簡單的方法來實現您的目標。以下是IB的API可能不適合的幾個原因:
- 回溯測試– 沒有用於回溯測試策略的內置解決方案。有一些很棒的第三方解決方案,大多數甚至提供的數據簡化了很多事情。檢視以下文章以取得更多資訊 –在Python中回溯測試系統交易策略:注意事項和開源框架。
- 易用性– 本詳細指南將嘗試逐步引導您完成IB API的設置。但有些步驟可能看起來有點複雜,如果您專注於貨幣市場或僅交易差價合約,則可能值得檢查Metatrader 4或Metatrader 5。它沒有那麼大的學習曲線,並且內置了幾個解決方案。如果你想在Metatrader中使用Python,甚至還有一個第三方開源橋。
- 傭金– 傭金和數據訂閱的成本加起來,特別是對於那些執行大量交易的人來說。雖然眾所周知,IB提供低傭金,但並非所有市場都是如此。他們還收取數據費用,並且不會在某個閾值以下支付利息。在投入時間學習API之前,值得比較IB交易與其他一些經紀商的成本效益。
» 如果您發現本指南很困難。查看我們的ib_insync指南。
IB的API具有眾所周知的高學習
曲線。但是有一個名為ib_insync的代碼庫,它大大簡化了演算法交易過程。
我們寫了一篇關於ib_insync庫的
指南。友情連結: ib_insync指南 – 盈透證券API
Python IB API (Native) VS 與坊間第三方庫(IBridgePy、IbPy 等等)
Python IB API (Native) 由 Interactive Brokers 盈透證券官方開發和維護。這確保了它將為IB伺服器提供最穩定的連接。
而 IBridgePy 或 IbPy 這類的第3方庫是由第三方開發的,IB 並不正式支援。
IB-insync 是一個流行的第三方框架。它利用異步方法與本機 API 進行通信,以提高效率。它還簡化了從 API 接收數據的過程。
如何設置 Python IB API (Native) ?
在 Python 中設置與 IB API 的連接有四個基本步驟。
- 在IB開立帳戶– IB提供非常適合測試的模擬帳戶。如果您決定連接到真實帳戶,TWS 中有一個 API 的唯讀選項,這在測試和瞭解 API 的早期階段非常有用。
- 下載 Python IB API (Native) – 這些是用Python編寫的腳本檔,便於與IB的用戶端連接和通信,而IB用戶端又連接到他們的伺服器。
- 下載您的IB用戶端(TWS或IB閘道) – 您可能已經熟悉盈透證券提供的預設交易用戶端TWS。另一種解決方案是使用盈透證券網關用戶端。開始時,最好在測試腳本時使用TWS,因為它可以直觀地確認帳戶中的任何活動。以後很容易切換到閘道。
- 選擇您的 IDE – 我們在選取的 IDE 中編寫 Python 腳稿。但是,由於我們需要持續開放的連接,因此並非所有 IDE 都適用。
- 測試連接性– 查看下面的代碼範例
在IB開立帳戶
我們專門撰寫了一篇關於如何做到這一點的博客文章:”如何註冊盈透證券類比交易帳戶“
要瞭解如何流覽IB平臺,請觀看以下視頻:IBKR短片 – 面向初學者的TWS – 入門
下載IB Python 原生 API
您可以透過導航到盈透證券網站並轉到技術–交易API –取得API軟體,或點擊此連結下載Python原生API http://interactivebrokers.github.io/

確保選擇 API 版本 9.73 或更高版本,因為在此之前的任何版本都沒有所需的 Python 源檔。此外,您應該使用Python版本3.1或更高版本。
運行下載的 msi 檔並完成安裝嚮導。這會將所需的Python源檔複製到硬碟驅動器。完成後,導航到您在安裝程式中指定的目錄,然後向下鑽取到此目錄 – /TWS API/source/pythonclient。在此資料夾中,運行該檔以將 API 安裝為包。python3 setup.py install
祝賀!您現在已經安裝了 IB API。為了確保它已正確安裝,請進入Python終端並鍵入.如果未顯示任何錯誤,則表示安裝成功。import ibapi
IB API 安裝程式將安裝一些檔,這些檔可實現與 Excel 的相容性,並在此過程中進行註冊表更改。如果您想避免這種情況,請查看在Linux或Mac上設置API的說明,該方法同樣適用於Windows。
在 Mac 或 Linux 中安裝 IB API
該過程類似於上述 Windows 安裝過程。導航到上面鏈接的安裝頁面,Mac / Linux列下有一個ZIP檔可供下載。解壓縮檔,然後導航到 IBJts/source/pythonclient 並執行 。python3 setup.py install
IB已經編寫了分步說明,可以在這裡找到 – https://ibkb.interactivebrokers.com/article/2484
關於安裝IB API的最後想法
如果您選擇不將IB API Python原始程式碼安裝為軟體包,只需將腳本放在pythonclient資料夾中並從那裡運行它們即可。
或者,從pythonclient資料夾中獲取ibapi資料夾,並將其放在創建腳本以從中訪問 API 的目錄中。
如果您要在虛擬環境中安裝IB API Python套件,請檢視以下連結以取得更多詳細資訊 – https://packaging.python.org/tutorials/installing-packages/
下載您的IB用戶端(TWS或IB閘道)
原生Python API通過經紀人提供的用戶端軟體與IB伺服器進行通信。有兩種選擇,IB交易者工作站(TWS)和IB閘道。
什麼是TWS?
TWS是手動交易者使用的標準用戶端。當您剛剛開始時,這個用戶端非常棒,因為它提供了您可以通過Python發送到IB的許多命令的視覺確認。
什麼是IB閘道
IB閘道是一種最小的解決方案,只需建立連接,無需開箱即用的配置。如果您希望節省資源,並且它是應用程式開發中通常使用的用戶端,那麼這是一個很好的解決方案。
如果您決定使用TWS,請導航到交易者工作站配置,該配置可以在TWS終端中的編輯–全域配置– API –設置下找到。您應該看到如下所示的螢幕:

確保選取「啟用 ActiveX 和套接字用戶端」 這是API 的主要要求。
如果您想安全地玩它,請檢查只讀API,以確保在測試API時不會意外執行訂單。
記下預設的 Socket 連接埠,或者根據需要將其更改為另一個可用埠。

最後,出於安全目的,請確保選取中 「僅允許來自本地主機的連接」。
IB閘道已準備好開箱即用,因此無需選中開箱即可啟用像TWS中的連接。如果要配置上述其他一些選項,請導航到「配置」 – 設定 – API –設定”, 轉到「網關」中的設定頁面。