解決方案 · 量化交易
量化交易行情方案:從回測到實盤,一個 API 打通
用歷史K線與Tick數據回測,再通過 WebSocket 在相同品種上實盤運行。iTick 以統一格式覆蓋股票、外匯、加密貨幣、指數與期貨,研究代碼與執行網關無需對接第二家數據商。
- 歷史 OHLCV 與 Tick,直接用於 Backtrader、VectorBT、vn.py
- WebSocket 推送報價、逐筆與 Level 2 深度,驅動實盤信號
- 跨市場價差與套利實時監控
- 美股、港股、A 股、外匯、加密貨幣、期貨統一代碼格式
import requests, pandas as pd
H = {"accept": "application/json", "token": "YOUR_API_TOKEN"}
def bars(asset, region, code, ktype=8, limit=1000):
r = requests.get(f"https://api.itick.org/{asset}/kline", headers=H,
params={"region": region, "code": code, "kType": ktype, "limit": limit})
df = pd.DataFrame(r.json()["data"]).rename(columns={"t": "time", "o": "open",
"h": "high", "l": "low", "c": "close", "v": "volume"})
df["time"] = pd.to_datetime(df["time"], unit="ms")
return df.set_index("time")
# Same loader for stocks, forex and crypto - one data source for every backtest
df = bars("stock", "US", "AAPL")
df["fast"], df["slow"] = df.close.rolling(10).mean(), df.close.rolling(30).mean()
df["pos"] = (df.fast > df.slow).astype(int).shift()
equity = (1 + df.close.pct_change() * df.pos).cumprod()
print("strategy return:", round(equity.iloc[-1] - 1, 4))
# Feed df straight into Backtrader (bt.feeds.PandasData), VectorBT or vn.py6大資產類別,統一格式
1分鐘-月線K線週期
Tick + L2執行級顆粒度
REST + WS研究與實盤
可以搭建什麼
大多數量化團隊需要的三個核心模塊,共用同一套數據。
策略回測平台
拉取任意支持市場的多年日線或日內分鐘K線,載入 Python / Java 回測框架。
實盤策略執行網關
訂閲報價、逐筆與深度,信號觸發後對接券商或交易櫃枱下單。
多市場套利監控
對比跨市場價格與盤口:期現價差、ETF 與標的,價差擴大即告警。
適配各類策略
日內、網格、均值迴歸、雙均線、RSI、馬丁等策略,數據源與策略無關。
無需逐個對接交易所
一個 Token、一種 JSON 格式,取代與每個交易所的單獨連接。
研究即生產
回測用的品種和字段就是實盤交易的品種和字段,實盤表現與研究一致。
參考架構
量化團隊如何把 iTick 接入策略全生命週期。
- 1
採集歷史
REST /kline 與 Tick 歷史落地到 Parquet 或數據庫。
- 2
策略回測
在 Backtrader、VectorBT 或 vn.py 中基於存儲的K線回測。
- 3
實時訂閲
WebSocket 訂閲相同品種的 quote / tick / depth。
- 4
信號與執行
策略引擎生成訂單,發送至券商或交易櫃枱。
需要的數據與對應接口
全部數據使用同一個 Token。
| 需求 | iTick 接口 | 典型用途 |
|---|---|---|
| 日 / 周 / 月K線 | REST /{asset}/kline kType 8-10 | 波段與中長線回測 |
| 日內K線 | REST /{asset}/kline kType 1-7 | 日內回測與信號 |
| 逐筆成交 | REST /{asset}/tick,WebSocket tick | 微觀結構與高頻研究 |
| 盤口深度 | REST /{asset}/depth,WebSocket depth | 執行與滑點建模 |
| 實時報價 | WebSocket quote | 實盤信號與風控校驗 |
用 Python 從研究走到實盤
一個加載函數適配所有市場,再實時訂閲相同品種。
- 免費獲取 API Token
- 下載歷史數據並回測
- 通過 WebSocket 訂閲並執行信號
import requests, pandas as pd
H = {"accept": "application/json", "token": "YOUR_API_TOKEN"}
def bars(asset, region, code, ktype=8, limit=1000):
r = requests.get(f"https://api.itick.org/{asset}/kline", headers=H,
params={"region": region, "code": code, "kType": ktype, "limit": limit})
df = pd.DataFrame(r.json()["data"]).rename(columns={"t": "time", "o": "open",
"h": "high", "l": "low", "c": "close", "v": "volume"})
df["time"] = pd.to_datetime(df["time"], unit="ms")
return df.set_index("time")
# Same loader for stocks, forex and crypto - one data source for every backtest
df = bars("stock", "US", "AAPL")
df["fast"], df["slow"] = df.close.rolling(10).mean(), df.close.rolling(30).mean()
df["pos"] = (df.fast > df.slow).astype(int).shift()
equity = (1 + df.close.pct_change() * df.pos).cumprod()
print("strategy return:", round(equity.iloc[-1] - 1, 4))
# Feed df straight into Backtrader (bt.feeds.PandasData), VectorBT or vn.py量化交易數據常見問題
iTick 支持哪些回測框架?
任何能讀取 pandas DataFrame 或 CSV 的框架都可以,包括 Backtrader、VectorBT、vn.py 以及自研 Java 回測引擎。
可以用 Tick 數據回測嗎?
可以。支持市場提供逐筆成交與盤口深度,同時提供 1 分鐘至月線的K線。
iTick 能直接下單嗎?
不能。iTick 是行情數據服務商,策略引擎使用 iTick 數據,再把訂單發送到你的券商或交易系統。
一個套餐能同時覆蓋股票、外匯和加密貨幣嗎?
可以。綜合套餐用一個 Token 覆蓋股票、外匯、貴金屬、指數與加密貨幣,限額詳見價格頁。