美股資料 API 該怎麼選?富途 API 與 AllTick 行情介面比較心得

  • 6
  • 0

前一陣子我在整理自己的美股監控小工具時,重新檢視了手邊的資料源。原本用的是富途 API,後來因為維護上的不便,轉而嘗試了雲端直連的 AllTick 行情介面。這篇文章記錄我的實際使用經驗,提供給同樣在評估「美股資料 API」的開發者參考。


 

資料痛點:富途 OpenD 的隱形依賴

一開始我的需求很單純:即時抓幾檔美股的報價,順便畫個分鐘線。因為我本身有富途證券帳戶,自然先從富途 API 下手。但實際接起來才發現,富途的行情服務必須透過 OpenD 本地閘道器來轉送資料。

使用富途 API 的幾個必要條件如下:

  • 需要安裝並常駐執行 OpenD 客戶端;
  • 程式必須透過 OpenD 與富途伺服器溝通;
  • OpenD 一旦斷線或版本強制更新,行情就會中斷。

有一次 OpenD 在深夜自動更新重啟,我的監控腳本無聲無息地斷了三個多小時,完全沒有察覺。這個事件讓我開始認真思考,是不是該找一個不需要本地閘道、也不必綁定券商帳戶的行情源。

效率問題:多一層閘道就多一分風險

富途開放平台的定位很明確,它服務的是既有的富途交易用戶,行情介面比較像是交易系統的附加功能。因此使用前會遇到幾個現實限制:

  • 需要富途帳戶,部分行情權限跟資產門檻綁定;
  • OpenD 必須長時間運行,機器重開或網路中斷都會影響資料流;
  • 美股深度報價、逐筆成交等資料往往要另外開通或付費。

如果只是想建一個獨立於券商之外的監控或量化研究工具,這些限制會明顯拉低開發效率。後來我在開發者社群看到有人提到 AllTick API,說可以直接用 WebSocket 訂閱美股即時行情,不需要安裝任何客戶端。我試接了一下,發現真的省掉了 OpenD 那一層,程式直接對雲端介面建立連線,服務端穩定性由對方負責,我的腳本不再需要「照顧」一個本地程序。

功能比較:一張表看懂兩者差異

比較維度富途 OpenD APIAllTick API
部署方式需本地/伺服器常駐 OpenD 閘道器直連雲端 WebSocket/REST,無需閘道器
帳戶要求需富途證券帳戶,部分權限需資產門檻API Key 即可接入,無需券商開戶
覆蓋市場以港股、美股、A股為主,綁定富途交易品種美股、港股、A股、外匯、貴金屬、加密貨幣等多市場統一介面
協定方式自有 SDK + OpenD 轉發標準 WebSocket/RESTful 介面
維運成本需自行維護閘道器程序穩定性無本地程序,服務端負責穩定性

這張表不是說富途 API 不好用。如果你本身就是富途的重度交易用戶,行情跟交易走同一套系統反而合理。但如果你要做的是一個獨立於券商之外的行情監控工具,多一層 OpenD 帶來的維運風險,就需要仔細權衡了。

工作改變:從「掛念閘道器」到「專注策略」

下面是我目前實際使用的一段 Python 程式碼,用 WebSocket 訂閱美股即時報價。對比之前的 OpenD 方案,程式碼中已經完全看不到本地閘道器的痕跡。

import json
import websocket

API_KEY = "your_alltick_api_key"
WS_URL = f"wss://quote.alltick.co/quote-stock-b-ws-api?token={API_KEY}"

def on_open(ws):
    subscribe_msg = {
        "cmd_id": 22004,
        "seq_id": 1,
        "trace": "sub-us-stock",
        "data": {
            "symbol_list": [
                {"code": "AAPL.US"},
                {"code": "TSLA.US"}
            ]
        }
    }
    ws.send(json.dumps(subscribe_msg))

def on_message(ws, message):
    data = json.loads(message)
    print("收到行情:", data)

def on_error(ws, error):
    print("連線出錯:", error)

def on_close(ws, close_status_code, close_msg):
    print("連線關閉,準備重連")

if __name__ == "__main__":
    ws = websocket.WebSocketApp(
        WS_URL,
        on_open=on_open,
        on_message=on_message,
        on_error=on_error,
        on_close=on_close
    )
    ws.run_forever()

接入 AllTick 後,我的監控腳本在美股盤前、盤中階段都表現穩定,不再出現因為閘道器程序掛掉而完全沒察覺的狀況。現在我可以把心力放在策略邏輯上,而不是半夜起來檢查 OpenD 是否還活著。

選型建議:看你的核心情境

  • 如果你本來就在用富途交易美股,帳戶權限也夠,沿用富途 API 沒問題;
  • 如果你需要一個不依賴券商帳戶、能穩定跑在伺服器上、而且還想同時覆蓋美股以外品種的資料層,雲端直連的介面會省心很多;
  • 我個人已經將監控腳本全部切換到 WebSocket 直連方案,機器重啟、伺服器遷移都不再影響行情推送。這種「不用時時刻刻掛念基礎設施」的感覺,對個人開發者來說真的很重要。