今天的內容是針對新手的,涉及到技術層面,即 API 和自動交易。程式交易除了回測(backtesting)之外,另一個非常重要的領域就是自動交易。在技術層面上實現自動交易,就需要運用到 API 這一技術。如果你之前沒有聽說過或者沒有嘗試過使用 API 進行自動交易,那么這段視頻非常適合你。

一、什么是 API?


在之前的一段視頻中,我們提到過 API 是用來連接你自己的程序和你的交易賬戶的,用于執行開倉、平倉、止盈、止損、獲取數據等一系列操作。不過,這個描述只是一個概念。要理解 API 是什么,就需要先明白我們平時使用電腦進行交易的實際運作原理。

平時我們所說的“手動”交易,意思是我們用手指通過鼠標和鍵盤,在證券行提供的交易軟件上輸入交易指令。發出指令后,這一組指令會通過網絡發送到證券行的服務器,再由證券行的服務器發送到交易所的服務器。交易所處理后會將數據返回給證券行服務器,最后數據再返回到你的電腦上顯示出來。這就是我們平時所說的“手動”交易的整個流程。指令和數據其實都會在網絡上經過一個大循環,最后再返回到自己的電腦上。

舉個例子,你在家里用富途牛牛的桌面軟件,輸入一個買入指令,買入 1000 股騰訊。這個指令到達富途服務器后,服務器會對你的指令進行一系列檢查,例如你的賬戶是否有足夠的資金、股票是否活躍、港股是否開盤、你輸入的價格是否有誤等。如果這些檢查有問題,指令當然就不會被執行。如果沒有問題,富途就會將這個指令發送到港交所服務器。如果交易成功,港交所服務器會將確認數據發送回富途,富途再將確認信息發送回給你。

由此可見,在整個交易結構中,證券行是交易所的參與者。從技術層面來看,向交易所下單的并不是你本人,而是證券行。所以證券行就是所謂的市場中介人角色。不過,普通散戶通常不太關心這些,因為整個流程都非常快,剛才提到的所有檢查、下單、返回確認等流程,都在瞬間完成。所以最后我們很快就在軟件上看到自己的賬戶交易狀態更新了,交易完成了,一眨眼就搞定了。

對于“手動”交易來說,剛才提到的“自己的電腦”,其實就是利用富途提供的軟件來處理一系列顯示內容、發出指令、更改指令等所有操作。之所以可以用鼠標和鍵盤簡單地操作,是因為這個軟件是證券行自己開發的,所以所有功能都早已準備好,讓你可以通過鼠標和鍵盤操作。而由于整個流程的重點是與證券行的服務器溝通,如果我們想進行自動交易,我們可以自己編寫程序,將一些可以自動化的流程交給自己的程序去執行。而自己的程序要與證券行服務器溝通,就需要使用證券行服務器指定的溝通方式,這個溝通方式就是 API。全名是 Application Programming Interface。只要你編寫的程序能夠讓證券行服務器聽得懂、叫得動,就可以不需要使用鼠標和鍵盤,一樣可以讓證券行幫你進行交易。所以 API 就是一個溝通的規范,是由各個證券行自己制定的。

舉個實際例子,畫面上上下兩段代碼都是同樣的動作,都是用 210 港元買入 1000 股騰訊股票。上面是富途 API 的寫法,下面是 IB API 的寫法。注意上下兩段代碼都是用 Python 寫的,但 API 的寫法完全不同。例如股票代碼在富途 API 中會用 00700.HK,但在 IB API 中就直接用 700。又例如 IB API 會規定每個交易指令都是一個 object,但富途 API 就不需要。這些區別其實是因為兩家不同的證券行,它們各自的 IT 開發團隊都是獨立運作的,所以大家的系統設計可以完全不同,寫法不同、規則不同,所以 API 的用法也不同。

二、新手需要了解的重點

三、主流證券行的 API


對于香港散戶來說,通過證券行 API 進行自動交易,大部分都使用 Interactive Brokers(IB)或者富途。這兩家本身就很受歡迎。

順便提一下,主流的加密貨幣交易所(如 Binance 等)也有自己的 API。不過,加密貨幣世界有一個叫做 ccxt 的庫,可以支持大量不同的加密貨幣交易所。這與傳統金融市場的狀況有所不同。

由于每家證券行的 API 都不同,使用之前就需要查看它們自己的 API 文檔。我們快速瀏覽一下這些證券行的 API 文檔。

四、如何上手 API?


由于 API 涉及到很多技術層面,為了避免嚇跑新手,我們簡單講一下重點。API 可以再細分為幾種,分別是 REST API、WebSocket 和 FIX。FIX 不是一般散戶使用的,而是銀行、對沖基金等機構投資者才會使用,技術要求很高。你可能會在 IB、SAXO 等證券行的 API 文檔中看到它們支持 FIX,但與你無關,直接跳過它。

可想而知,實時數據的處理方法與歷史數據有很大區別。而兩種 API 都需要掌握,缺一不可。

五、設計自動交易系統


要做自動交易,通過 API 發號施令只是其中一環。你需要設計的自動交易程序至少要有以下幾種元素:

這幾組系統需要同時運作,系統之間要傳遞最新的數據。所以設計自動交易系統是一項大工程,也是所有新手程式交易者需要攻克的一個大難題。

最難的地方是,證券行的 API 文檔不會從架構層面教你,它們都假設讀者已經是軟件工程師,需要你自己去思考。怎么思考呢?還是那句話,有價值的技術是不會輕易分享的。有機會我們再詳細講解。

如果你已經了解了以上內容,接下來的步驟大致如下:

  1. 先開模擬交易賬戶
    用模擬賬戶測試 API 功能。IB 和富途都有模擬賬戶,大多數功能與真實賬戶相同,這樣就不需要每次都用真錢來測試。

  2. 測試必用功能
    測試時最重要的是測試一些必用的功能,例如獲取自己賬戶的資料、獲取實時數據、下單、改單等。等測試到一定程度,你就會明白數據流是怎么樣的。

  3. 建立系統原型
    有了系統原型后,就拿去進行前向測試(forward run)一段時間。用電腦或 VPS,直接用 PyCharm、Visual Studio 等 IDE 運行一段時間。如果有任何 bug,可以在前向測試時發現,慢慢調試,有耐心,改到看不到 bug 為止。

  4. 用少量真錢測試
    最后用少量真錢測試一下,就像學騎自行車一樣,慢慢就會跑得順了。

    原文引自YouTube視頻:https://www.youtube.com/watch?v=xyQdvODcVSk

上一篇:

快速提示:在 Android 上隱藏你的 API 密鑰

下一篇:

.NET 8 ASP.NET Core Web API 實戰:構建與測試 API Controllers
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費