跳至內容

工程

我們從零開發了一個交易平台。以下是箇中付出。

有關經紀商技術的文章都會警告創辦人:開發平台是一項歷時多年的工程計劃。這個警告沒錯,但它幾乎總是出自從未開發過平台、也說不出原因的供應商。我們親自開發了自己的平台:客戶交易終端、員工 CRM、跟單交易引擎,以及背後的市場數據服務。本文講述其中涉及的工作,以及只有親身做過才知道的細節,專為正在權衡自行開發還是購買的創辦人而寫。

閱讀需時9分鐘

同一個示例平台在虛構品牌之間切換:交易終端及手機登入頁面上的名稱、標誌、顏色、字體及網址都會隨之改變。

示例品牌,為本頁虛構。

示例品牌,為本頁虛構。

市場數據是最困難的部分

圖表和報價看似是簡單的部分,卻是整套系統中最困難的營運問題,因為市場數據並不是單一產品。加密貨幣報價可從交易所的端點免費串流取得。外匯則根本沒有中央成交記錄,因此零售平台只能依賴交易商的數據源及非官方端點。股票數據須授權使用,按交易所計價,而較便宜的級別並不包括相鄰的資產類別。

我們試過免費及無需密鑰的端點、非官方的圖表數據源,以及免費級別的數據供應商,每一個都以自己的方式失敗:一個封鎖來自雲端數據中心地址的請求,一個在免費級別完全不提供外匯數據,一個沒有貨幣對的成交量數據,因為真正的現貨外匯本身並無成交量可報。每個數據源的失敗方式都不同,而交易產品必須在這一切之中保持報價不斷流動。

最終,我們建立了自己的專屬數據源服務,採用授權的商業數據,配備獨立的故障轉移機制,並當作基礎設施來營運。市場數據是一項需要您持續營運的產品。無論自行開發還是購買,都應以這個角度編列預算。

trade.yourbrand.com示例市場數據
Your Brand

示例市場數據及示例客戶。

資金路徑是另一種程式碼

價格圖表遲一秒顯示只是小麻煩;一筆入金被重複入賬卻是一宗事故。示範版與真正平台之間最大的分別,在於資金經過的每條路徑,都以有別於其他一切的標準來設計。

具體來說,這代表結算邏輯即使執行兩次也不會重複入賬,因為在分佈式系統中,事情就是會執行兩次。這代表銀行電匯從不自動入賬,因為看似已到賬的電匯與已完成結算的電匯是兩回事。這代表交易只能以數據源中確實出現過的價格成交,絕不能以過時或插值得出的價格成交,因為以從未成交過的價格成交會引起爭議。這也代表每一項這類決定都會留下審計追蹤記錄,因為受監管的業務總有一天會被要求出示。

這是普通的工程工作,但每次都必須嚴守紀律。這也是在上線壓力下開發的小團隊最想延後處理的部分,而且一旦發生首宗真實客戶事故,便無法再事後補救。

Your Brand入金示例數據
客戶賬戶金額狀態
示例客戶 A剛剛100009$2,500.00待審批已批准批准
示例客戶 B12分鐘前100014$1,200.00已批准
示例客戶 C38分鐘前100021$500.00已批准

示例數據及示例客戶。

無伺服器託管的局限

無伺服器託管很適合網站,卻不適合交易系統。函數在兩次請求之間便不復存在,無法運行背景工作程式,因此任何持續運作的功能,從報價分發到跟單交易執行,都必須改寫成輪詢及隊列。長時間的串流連接會碰上硬性逾時限制。持久狀態必須存放在數據庫中,因為檔案系統在每次調用之間不會保留。

這些教訓我們都是吃過苦頭才學會的,而架構也因此變得更好:習慣性地確保冪等、處處可以續行,而且運行成本低廉。但這些學習耗費了數個月的工程時間,而為自行開發編列預算的創辦人絕不會想到要把它計算在內,因為在您真正碰上之前,沒有任何架構圖會顯示這些限制。

品牌必須是開發的一部分

白標聽起來像是一項外觀設計工作,直到您嘗試把它貫徹到整個產品。真正屬於經紀商自己的品牌,必須延伸到交易終端、CRM、電郵、應用程式圖示及域名,而經紀商的數據必須存放在其自己的數據庫中。我們把品牌及部署做成配置項目,以一套程式碼產生完全獨立的品牌化部署,因為另一種做法,即為每位客戶分叉一套程式碼,會令日後的每項修正都要按客戶數目成倍重複。

銷售示範不會展示這項決定,但它會影響平台多年。這也是我們建議創辦人向每家供應商提出的「單一數據庫問題」的由來:您的客戶數據存放在誰的數據表中?

成本多少,以及這對您的決定有何意義

成本並沒有單一數字。第一個可用的版本需要數個月的全職工程開發。受監管業務能夠運行的版本,則需要好幾倍的投入,因為兩者之間的差距正是上文所述那些不起眼的工作:數據韌性、資金路徑的紀律、可審計性及品牌隔離。而且開支永無止境,因為市場不斷變化,交易平台必須持續維護。

這就是自行開發還是購買的決定的關鍵所在。當自有技術本身就是業務時,自行開發是正確的選擇。對於優勢在於分銷、服務或細分市場的經紀商來說,自行開發是一段昂貴的彎路,要重新解決早已解決的問題。我們之所以這樣說,是因為我們自己走過這段彎路,這也是這個平台存在的原因:讓下一位創辦人不必再走。

Pelris 開發經紀商軟件,並非律師事務所或經紀商。本指南的任何內容均不構成法律、監管、金融或投資意見。採取行動前,請向在您所屬司法管轄區執業的律師確認您的情況。

看看完成的平台

預約示範,把交易終端、CRM 及數據管道作為一個系統來審視。歡迎帶上您最棘手的技術問題。