解決方案 · 配套工具
行情基礎設施:轉發、回放、指標計算與品種元數據
當越來越多團隊使用行情時,幾個共享服務就很值得建設:一個 iTick 訂閲轉發給所有內部系統,按需回放歷史,統一計算指標,並在全公司保持一致的品種元數據。
- 轉發到 Redis / Kafka,減少訂閲配額佔用
- Tick 與 K線回放,用於 EA 測試與壓力場景
- MA、MACD、BOLL、ATR 統一指標服務
- 交易所、交易時段與品種元數據
# iTick -> Redis Pub/Sub (or Kafka): one subscription, many internal consumers
import json, websocket, redis # pip install redis websocket-client
r = redis.Redis()
def on_message(ws, msg):
d = json.loads(msg).get("data") or {}
if d.get("s"):
r.publish(f"md.{d['s']}", msg) # consumers: risk, UI, strategies, storage
r.hset("md:last", d["s"], msg) # latest snapshot for late joiners
websocket.WebSocketApp("wss://api.itick.org/stock", header={"token": "YOUR_API_TOKEN"},
on_open=lambda ws: ws.send(json.dumps({"ac": "subscribe",
"params": "AAPL$US,TSLA$US,700$HK", "types": "quote,tick,depth"})),
on_message=on_message).run_forever(ping_interval=20)
# Kafka: replace r.publish with producer.send("market-data", key=sym, value=msg)1 → N訂閲分發
N 倍回放速度
1 套指標口徑
50+交易所元數據
四個配套服務
讓其他所有系統都更簡單的小服務。
行情轉發服務
iTick → 內網 MQ(Redis/Kafka),多業務共用一個上游連接,減少訂閲配額佔用。
行情回放服務
回放歷史 Tick 與 K線,復現行情、測試 EA、做風控壓力測試。
指標計算服務
基於原始 Tick / K線統一計算 MA、MACD、BOLL、ATR 等指標對外輸出,各團隊口徑一致。
品種元數據管理
交易所、交易時間、合約乘數、最小變動價位與交易時段日曆。
權限控制
由網關決定各團隊可見的市場,iTick 憑證集中管理。
可觀測性
在單一入口統計消息速率、斷檔與延遲。
共享行情層
一個上游,為所有消費者提供一致數據。
- 1
iTick 行情
WebSocket 實時數據,REST 歷史與代碼列表。
- 2
轉發服務
按品種發佈到 Redis 或 Kafka Topic。
- 3
共享服務
回放、指標與元數據接口。
- 4
消費方
策略、風控、前端、存儲與分析。
Python 構建模塊
轉發、回放與指標服務,幾分鐘即可改造使用。
- 免費獲取 API Token
- 在 MQ 旁部署轉發服務
- 所有消費方改為訂閲內部 Topic
# iTick -> Redis Pub/Sub (or Kafka): one subscription, many internal consumers
import json, websocket, redis # pip install redis websocket-client
r = redis.Redis()
def on_message(ws, msg):
d = json.loads(msg).get("data") or {}
if d.get("s"):
r.publish(f"md.{d['s']}", msg) # consumers: risk, UI, strategies, storage
r.hset("md:last", d["s"], msg) # latest snapshot for late joiners
websocket.WebSocketApp("wss://api.itick.org/stock", header={"token": "YOUR_API_TOKEN"},
on_open=lambda ws: ws.send(json.dumps({"ac": "subscribe",
"params": "AAPL$US,TSLA$US,700$HK", "types": "quote,tick,depth"})),
on_message=on_message).run_forever(ping_interval=20)
# Kafka: replace r.publish with producer.send("market-data", key=sym, value=msg)基礎設施常見問題
為什麼要在內部轉發行情?
一個上游訂閲經 Redis 或 Kafka 分發,可避免觸達連接數與訂閲數上限,並讓所有服務使用相同時間戳。
能回放 Tick 而不僅是K線嗎?
可以,適用於提供 Tick 歷史的市場。從 WebSocket 存儲 Tick 或拉取歷史後,按原始時間間隔回放。
iTick 提供技術指標嗎?
技術指標在套餐功能中提供;很多團隊也會基於原始 OHLCV 自建統一指標服務以完全掌控口徑,見上方示例。
品種元數據從哪裏來?
代碼列表接口按市場返回代碼、名稱與交易所,再結合交易所交易時段日曆即可獲得交易時間。