Python IB API 接駁教學 – 1. IB API 介紹

文章提供: 核心引擎

Python IB API (Native) 介紹

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

IB平臺上的圖表示例。它顯示特斯拉期權上漲30,000%,並在幾天內崩潰 – 大約在2020年

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 的連接有四個基本步驟。

  1. 在IB開立帳戶– IB提供非常適合測試的模擬帳戶。如果您決定連接到真實帳戶,TWS 中有一個 API 的唯讀選項,這在測試和瞭解 API 的早期階段非常有用。
  2. 下載 Python IB API (Native) – 這些是用Python編寫的腳本檔,便於與IB的用戶端連接和通信,而IB用戶端又連接到他們的伺服器。
  3. 下載您的IB用戶端(TWS或IB閘道) – 您可能已經熟悉盈透證券提供的預設交易用戶端TWS。另一種解決方案是使用盈透證券網關用戶端。開始時,最好在測試腳本時使用TWS,因為它可以直觀地確認帳戶中的任何活動。以後很容易切換到閘道。
  4. 選擇您的 IDE – 我們在選取的 IDE 中編寫 Python 腳稿。但是,由於我們需要持續開放的連接,因此並非所有 IDE 都適用。
  5. 測試連接性– 查看下面的代碼範例

在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 設定”, 轉到「網關」中的設定頁面。



Python API

Python IB API 接駁教學 – 3. 運用 Telegram Bot 自動發送通知

如何運用 Telegram Bot 自動發送通知給你? 現在,您已經能夠獲取市場數據並創建訂單,您可能希望實現通知系統。例如當訂單被觸發時,或者達到某個你自訂的條件。 Telegram 有一種非常簡單的方法來創建實時通知訊息。 設定 Telegram Bot 步驟: 從電報中打開與 "BotFather" 的聊天室。鍵入命令 /newbot它將提示你輸入機器人名稱,並向你發送訪問權杖 (Token)。與剛創建的機器人打開聊天室。輸入任意的聊天訊息以啟用聊天室。轉到以下...

Python IB API 接駁教學 – 2. API 函數

開始連接 IB API 以下是一個簡單的程式碼,用於測試與 IB API 的連接。如果需要,請更改函數中的第2個參數 7497 (port number)。而第3個參數 123 是用於向 API 識別程式的用戶端 ID。你可以把它設為任何唯一的正整數。 from ibapi.client import EClient from ibapi.wrapper import EWrapper class IBapi(EWrapper, EClient): def __init__(self):...

Python 富途 API 函數表

筆者整理了一個富途 API 函數表,方便同學深入認識 Futu API 可以拿到的數據類型。 富途 API 可分為2大類 透過行情接口下載各種市場產品的即時數據 (分鐘級、秒級)。透過交易接口以程式即時進行下單交易、帳戶管理等功能。 行情接口 以下是行情接口函數表,看有沒有你相要的數據:...

Python 富途 API 接駁方法

很多同學都不知道原來富途牛牛有免費開放一套 API 給大家拿取實時市場數據,這篇教學會向大家富途 API 接駁方法。 富途 API 軟件架構 Python 富途 API 由 Python futu-api 函式庫及 Futu OpenD 軟件組成。我們只需在電腦安裝運行 Futu OpenD 軟件,然後在 Python 調用 futu-api 函數,就可拎到實時市場數據。 安裝 3 步曲 開立富途牛牛帳戶下載並安裝 Futu OpenD 軟件下載並安裝 Python futu-api 第3方函式庫 第1步: 開立富途牛牛帳戶...

PYTHON 自動化數據擷取講座
富途 OPEN API 程式交易講座