在量化交易領域,美股實時行情數據是構建高效交易策略的核心要素。通過實時 Tick、實時報價、美股歷史 K 線、美股歷史數據等信息,交易者可以實現精準的市場分析和決策。本文將介紹如何利用股票數據 API、股票數據接口、金融 API、金融行情數據 API 以及股指期貨 API 等工具,在 Python 環境中獲取這些數據,幫助初學者快速上手量化交易實踐。
為什麼需要美股實時行情數據?
量化交易依賴於高質量的數據源,尤其是美股市場的高流動性要求實時性和準確性。實時 Tick 數據提供逐筆成交細節,實時報價包括開盤、最高、最低、收盤價等 OHLC 信息,而歷史 K 線則用於回測策略。通過可靠的 API 接口,我們可以輕鬆集成這些數據,避免手動採集的低效。
本文將以 iTick API 為例進行演示。該 API 覆蓋美股(US 地區)、港股(HK)、A 股(SZ/SH)等市場,支持 RESTful 和 WebSocket 兩種方式。注意:使用前需在官網註冊獲取 API Token。
獲取實時 Tick 數據
實時 Tick 數據包括最新價、成交數量和時間戳,適合高頻交易監控。iTick 提供 GET 接口:/stock/tick?region={region}&code={code}。
Python 代碼示例
import requests
# API endpoint
url = "https://api.itick.org/stock/tick?region=US&code=AAPL" # 以蘋果股票為例
headers = {
"accept": "application/json",
"token": "your_api_token" # 替換為你的實際Token
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
print("實時Tick數據:", data)
else:
print("請求失敗:", response.status_code)
響應示例:
{
"code": 0,
"msg": null,
"data": {
"s": "AAPL",
"ld": 225.215,
"t": 1754554087000,
"v": 1134500
}
}
這裏,ld是最新價,v是成交量,t是時間戳。通過輪詢此接口,你可以實現簡單的實時監控。
使用 WebSocket 獲取實時報價和盤口
對於毫秒級推送,WebSocket 是首選。iTick 的 WebSocket 支持訂閲 quote(報價)、depth(盤口)和 tick(成交)類型。連接後發送訂閲指令,即可接收流式數據。
Python 代碼示例
使用websocket庫實現:
import websocket
import json
import threading
import time
# WebSocket URL和Token
WS_URL = "wss://api.itick.org/stock"
API_TOKEN = "your_api_token" # 替換為你的實際Token
def on_message(ws, message):
data = json.loads(message)
if data.get("code") == 1 and data.get("msg") == "Connected Successfully":
print("連接成功")
elif data.get("resAc") == "auth" and data.get("code") == 1:
print("認證成功")
subscribe(ws) # 訂閲數據
elif data.get("data"):
market_data = data["data"]
data_type = market_data.get("type")
symbol = market_data.get("s")
print(f"{data_type.upper()} 數據 for {symbol}:", market_data)
def on_error(ws, error):
print("錯誤:", error)
def on_close(ws, close_status_code, close_msg):
print("連接關閉")
def on_open(ws):
print("WebSocket連接打開")
def subscribe(ws):
subscribe_msg = {
"ac": "subscribe",
"params": "AAPL$US,TSLA$US", # 支持多個股票,格式:code$region
"types": "depth,quote,tick" # 訂閲類型
}
ws.send(json.dumps(subscribe_msg))
print("訂閲消息已發送")
def send_ping(ws):
while True:
time.sleep(30) # 每30秒心跳
ping_msg = {
"ac": "ping",
"params": str(int(time.time() * 1000))
}
ws.send(json.dumps(ping_msg))
print("Ping 已發送")
if __name__ == "__main__":
ws = websocket.WebSocketApp(
WS_URL,
header={"token": API_TOKEN},
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close
)
# 啓動心跳線程
ping_thread = threading.Thread(target=send_ping, args=(ws,))
ping_thread.daemon = True
ping_thread.start()
ws.run_forever()
此代碼連接 WebSocket,認證後訂閲 AAPL 和 TSLA 的美股數據。響應包括報價(OHLC、成交量)、盤口(買賣五檔)和成交細節。適合構建實時交易系統。
獲取美股歷史 K 線數據
歷史 K 線用於策略回測,支持分鐘線到月線。接口:/stock/kline?region={region}&code={code}&kType={kType}&limit={limit}&et={et}。
- kType:1(1 分鐘)、2(5 分鐘)、...、10(月 K)
Python 代碼示例
import requests
# API endpoint
url = "https://api.itick.org/stock/kline?region=US&code=AAPL&kType=1&limit=10" # 最近10條1分鐘K線
headers = {
"accept": "application/json",
"token": "your_api_token" # 替換為你的實際Token
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
print("歷史K線數據:", data)
else:
print("請求失敗:", response.status_code)
響應示例:
{
"code": 0,
"msg": null,
"data": [
{
"tu": 56119888070.5,
"c": 225.215,
"t": 1741239000000,
"v": 104799385,
"h": 226.92,
"l": 224.44,
"o": 226.27
}
]
}
通過調整kType和limit,你可以獲取不同週期的歷史數據,用於趨勢分析或機器學習模型訓練。
結語
本文詳細介紹瞭如何使用 Python 獲取美股實時行情數據,包括實時 Tick 數據、WebSocket 實時報價和盤口數據,以及歷史 K 線數據。這些數據是構建量化交易策略的重要基礎。通過實際代碼示例,我們展示瞭如何用簡單的方式接入這些金融數據 API,並對獲取的數據進行初步處理。
在實際應用中,你可以將這些數據整合進更復雜的量化交易系統,結合技術指標計算、策略回測框架以及風險管理模塊,構建完整的自動化交易解決方案。同時需要注意 API 調用的頻率限制、數據安全性及合規性等問題。
希望這篇指南能幫助你快速入門美股量化交易的數據獲取環節。隨着實踐經驗的積累,你可以進一步探索高級功能,如多市場數據同步、高頻交易優化和大數據量下的性能調優等課題。
提示:本文基於公開文檔整理,僅供學習參考,非投資建議
參考文檔:https://docs.itick.org/websocket/stocks
GitHub:https://github.com/itick-org/