美股行情 API
免費 · 快速 · 穩定
美股與 ETF 的收盤報價(T+1)、歷史 K 線、靜態資訊、批次查詢與回測,統一 JSON 回應格式,無需註冊即可呼叫。
介面位址: https://us2.ninequantai.com
所有端點都掛在這個位址下。路徑區分大小寫,標的代碼不區分。
GET /v1/quote/AAPL.US{
"code": 0,
"message": "ok",
"data": {
"symbol": "AAPL.US",
"name": "苹果",
"market": "US",
"currency": "USD",
"last": 328.21,
"open": 324.87,
"high": 330.81,
"low": 324.11,
"prev_close": 324.96,
"change": 3.25,
"change_pct": 1.0001,
"volume": 37225838,
"ts": "2026-09-03T16:00:00-04:00",
"as_of": "2026-09-03",
"delayed": true,
"venue_mode": "consolidated",
"timeliness": { "mode": "eod_only", "delayed": true, "label": "T+1 收盘数据" },
"source": "eod"
}
}範例取自真實呼叫。delayed 與 as_of 原樣保留,一眼就知道這批資料是什麼時效。
目前提供 T+1 及更早的日線資料,盤中與即時資料暫未開放。 資料已更新至 2026/09/04
能力概覽
四個數字都是開啟本頁時向伺服器實測得到的,不是宣傳口徑,重新整理一次即可重現。沒測到的寫「毫秒級」或「—」——我們不寫沒有量測依據的數字承諾。
為什麼選擇我們的 API?
六條都能在本頁別處當場驗證:能力數字、流量限制表、線上試用面板。我們不寫驗證不了的口號。
快速回應
歷史 K 線與報價命中本地庫後毫秒級回傳。本頁頂部四格就是你這次開啟頁面實測到的耗時。
穩定可靠
上游資料來源故障時回傳明確的 502,絕不拿舊資料或髒資料頂替。
智慧流量限制
滑動視窗計數,429 自帶 Retry-After 與 X-RateLimit-* 標頭,用戶端可以自適應退避。
RESTful 介面
所有端點共用 code / message / data 一個回應外殼,用戶端只寫一處解析。
資料豐富
報價、日線週線月線、靜態資訊、標的搜尋、批次查詢與回測,一套介面全涵蓋。
完全免費
訪客免註冊即可呼叫,註冊後額度更高。免費檔不是試用期,也不會靜默降額。
💰 用量與定價
三檔用量。卡上每一個數字都即時來自伺服器方案設定,前端一個都沒寫死。
訪客版
- 單端點
- 30 次/分
- 批次查詢
- 10 次/分
- 回測
- 5 次/分
- API Key
- 無法使用
- 依來源 IP 限流,開啟就能呼叫
- 報價、K 線、靜態資訊、標的搜尋、批次與回測全部開放
- 不簽發 API Key
- 無呼叫記錄與統計
- 無技術支援
註冊版
推薦- 單端點
- 60 次/分
- 批次查詢
- 20 次/分
- 回測
- 20 次/分
- API Key
- 1 把
- 依 API Key 限流,與他人互不干擾
- 控制台可查每日呼叫量統計
- 回測記錄可儲存與分享
- 郵件技術支援
Pro 版
- 單端點
- 300 次/分
- 批次查詢
- 100 次/分
- 回測
- 60 次/分
- API Key
- 5 把
- 專屬額度,可開多把 Key 分攤用量
- 依端點、依日的詳細呼叫統計
- 參數最佳化、投資組合回測與 CSV 匯出
- 專屬技術支援,優先回應
回測介面訪客 5 次/分、註冊使用者 20 次/分。以上流量限制數字來自 GET /api/plans,與定價頁、控制台同源,不會出現互相矛盾的版本。 查看完整定價與機構版 →
| 介面類別 | 訪客版 | 註冊版 | Pro 版 | 機構版 |
|---|---|---|---|---|
| 報價 | 30 次/分 | 60 次/分 | 300 次/分 | 3000 次/分 |
| K 線 | 30 次/分 | 60 次/分 | 300 次/分 | 3000 次/分 |
| 分時 | 無法使用 | 60 次/分 | 300 次/分 | 3000 次/分 |
| 靜態資訊 | 30 次/分 | 60 次/分 | 300 次/分 | 3000 次/分 |
| 標的搜尋 | 30 次/分 | 60 次/分 | 300 次/分 | 3000 次/分 |
| 批次查詢 | 10 次/分 | 20 次/分 | 100 次/分 | 1000 次/分 |
| 回測 | 5 次/分 | 20 次/分 | 60 次/分 | 600 次/分 |
| 參數最佳化 | 無法使用 | 無法使用 | 10 次/小時 | 200 次/小時 |
| 帳號介面 | 無法使用 | 120 次/分 | 300 次/分 | 600 次/分 |
每個行情端點各有一個獨立計數桶,不共用。同時呼叫報價和 K 線不會讓你憑空少掉一半額度。
流量限制回應標頭
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 27
X-RateLimit-Reset: 1788451260
Retry-After: 12每個回應都帶這幾個標頭,用戶端據此自適應節流,不必靠猜。
超限之後
X-RateLimit-Limit— 本視窗的額度上限X-RateLimit-Remaining— 本視窗剩餘次數X-RateLimit-Reset— 配額重設的 Unix 秒Retry-After— 還要等多少秒,只在 429 時出現
回傳 429,回應主體裡帶 retry_after。請依 Retry-After 退避重試,不要用固定間隔硬打 —— 那只會讓你一直卡在限制視窗裡。
🔐 驗證方式
三種呼叫身分,切換只需要改一個請求標頭。
訪客模式
無需註冊不帶任何憑證直接呼叫,依來源 IP 計額度。
單端點額度: 30 次/分
- 適合先試介面、寫 demo、跑一次性指令碼
- 同一個出口 IP 下的所有呼叫共用額度 —— 公司網路、雲端函式、CI 要留意
- 不保留呼叫記錄,控制台裡看不到用量
註冊使用者
推薦請求標頭帶上 API Key,依 Key 計額度。
單端點額度: 60 次/分
- 註冊只要電子郵件驗證碼,平台不設密碼,註冊即自動簽發一把 Key
- Key 以 nq_ 開頭,後接 64 位十六進位;控制台可隨時重設
- 控制台能看到每日呼叫量,回測記錄可儲存與分享
Pro 版本
更高額度同樣是 API Key,額度與可用功能依 Pro 檔發放。
單端點額度: 300 次/分
- 可開多把 Key,額度依 Key 分配,互不干擾
- 依端點與依日的詳細呼叫統計
- 參數最佳化、投資組合回測與 CSV 匯出隨檔位開放
請求範例
GET https://us2.ninequantai.com/v1/quote/AAPL.US不帶任何請求標頭,依來源 IP 計額度。
GET https://us2.ninequantai.com/v1/quote/AAPL.US
Authorization: Bearer nq_your_api_key_here
Accept-Language: zh-CN把 nq_your_api_key_here 換成控制台裡的 Key。Accept-Language 決定錯誤訊息用哪種語言回傳。
憑證不合法時是 401,不會降級成訪客
帶了 Key 但 Key 過期或被重設,回傳 401 而不是靜默按訪客處理 —— 否則你只會看到「資料怎麼少了」,而不是「該換 Key 了」。完全不帶憑證才按訪客走。
⚠️ 別把 Key 寫進前端
瀏覽器裡的任何程式碼都是公開的。Key 只放伺服器或本機指令碼;一旦外洩,去控制台重設,舊 Key 立即失效。
⚠️ 錯誤碼
只列真正會遇到的六個,不鋪滿一整張 HTTP 狀態碼表。
| 狀態碼 | 含義 | 該怎麼辦 |
|---|---|---|
400 | 參數不合法:日期格式、period 取值、批次標的數超上限等 | 依 message 改參數。message 已依 Accept-Language 在地化,可以直接顯示給你的使用者。 |
401 | 憑證不合法或已過期 | 檢查 Authorization 標頭是否寫成 Bearer nq_xxx;Key 被重設過就去控制台取新的。完全不帶憑證不會 401,會按訪客處理。 |
403我方新增 | 目前身分沒有這項權限 | 兩種情況:分發姿態還沒開放(例如 eod_only 下的分時),或目前方案不含該能力。前者等授權,後者升級方案。 |
404我方新增 | 標的或記錄不存在 | 先用 /v1/symbols 確認拼字。統一格式是 QQQ.US,預設市場按美股解釋。 |
429 | 觸發流量限制 | 讀 Retry-After 退避重試。長期不夠用就升級方案,或者多開一把 Key —— 額度是依 Key 分配的。 |
502 | 上游資料來源暫時無法使用 | 我們寧可回傳 502 也不回傳髒資料。稍後重試,或改用已入庫的歷史區間。 |
403 與 404 是我方在四個通用錯誤碼之外新增的:403 用於「分發姿態尚未開放」(例如目前的分時端點)與「目前方案不含該能力」,404 用於標的或記錄不存在。少了這兩個,呼叫方分不清該等授權、該升級方案,還是只是程式碼寫錯了。
500 / 503 同樣遵守上面的回應外殼。任何錯誤回應都不會把堆疊吐給呼叫方,出問題請帶上 X-Request-Id 找我們。
統一回應格式
所有 /v1 與 /api 端點回傳同一個外殼,用戶端只需要寫一處解析。
{
"code": 0,
"message": "ok",
"data": { }
}{
"code": 429,
"message": "请求过于频繁,请在 12 秒后重试",
"data": null,
"retry_after": 12
}每個回應都帶 X-Request-Id 標頭。回報問題時附上它,我們能直接定位到那一次呼叫。
📦 SDK 範例
Python(requests)、JavaScript(fetch)與 cURL 三份,複製即可跑。把 YOUR_API_KEY 換成控制台裡的 Key;不換也能跑,只是依訪客額度計。
介面位址: https://us2.ninequantai.com
import requests
BASE = "https://us2.ninequantai.com"
# 訪客呼叫把這一行刪掉即可
headers = {"Authorization": "Bearer YOUR_API_KEY"}
r = requests.get(f"{BASE}/v1/quote/QQQ.US", headers=headers, timeout=20)
r.raise_for_status()
body = r.json() # 統一信封:code / message / data
if body["code"] != 0: # HTTP 200 也可能是業務失敗,務必判 code
raise RuntimeError(body["message"])
print(body["data"])我們不提供也不打算提供官方 SDK:一個只有七個端點、統一回應外殼的 REST 介面,二十行程式碼就能封裝完,多一層 SDK 只會多一層版本問題。
API 端點
七個端點:報價 / 歷史K線 / 分時 / 靜態資訊 / 批次,再加上標的搜尋與回測。每個端點都給了參數表、真實請求與回應範例,以及一個可以直接發請求的線上試用面板。
/v1/quote/{symbol}報價
單一標的的最新可分發報價
時效取決於部署的分發姿態:eod_only 下回傳最近一個已過 T+1 的交易日快照,as_of 標明資料日期。回應裡的 timeliness 會如實說明本次拿到的是哪一種。
參數
| 參數 | 位置 | 型別 | 必填 | 預設 | 說明 |
|---|---|---|---|---|---|
symbol | 路徑 | string | 必填 | — | 標的代碼,QQQ 或 QQQ.US 均可,預設市場按美股解釋 |
請求範例
# 訪客呼叫把這一行刪掉即可
curl -s "https://us2.ninequantai.com/v1/quote/QQQ.US" \
-H "Authorization: Bearer YOUR_API_KEY"回應範例
{
"code": 0,
"message": "ok",
"data": {
"symbol": "QQQ.US",
"name": "纳斯达克100",
"market": "US",
"currency": "USD",
"last": 717.67,
"open": 710.85,
"high": 718.915,
"low": 709.69,
"prev_close": 709.24,
"change": 8.43,
"change_pct": 1.1886,
"volume": 29449781,
"ts": "2026-09-03T16:00:00-04:00",
"as_of": "2026-09-03",
"delayed": true,
"venue_mode": "consolidated",
"venue_mode_label": "合并口径(全市场)",
"timeliness": {
"mode": "eod_only",
"delayed": true,
"delay_minutes": null,
"label": "T+1 收盘数据",
"max_date": "2026-09-03"
},
"source": "eod"
}
}範例取自真實呼叫,為便於閱讀裁剪了陣列長度。
可能的錯誤
400參數不合法:日期格式、period 取值、批次標的數超上限等404標的或記錄不存在429觸發流量限制502上游資料來源暫時無法使用
線上試用
填好參數直接發一次真實請求。它會消耗你目前身分的額度,和線上呼叫完全一樣。
還沒發過請求。點上面的按鈕試一次。
/v1/kline/{symbol}歷史 K 線
日 / 週 / 月 K 線
週線與月線由日線重新取樣得出,不單獨儲存。adjust=qfq 為前復權:因子在查詢時相乘算出,不預存復權價,最新價保持真實成交價;adjust_applied 會如實告訴你該區間是否真的有因子被套用。
參數
| 參數 | 位置 | 型別 | 必填 | 預設 | 說明 |
|---|---|---|---|---|---|
symbol | 路徑 | string | 必填 | — | 標的代碼 |
period | 查詢 | string | 選填 | day | day / week / month,預設 day |
start | 查詢 | string | 選填 | — | 起始日期 YYYY-MM-DD |
end | 查詢 | string | 選填 | — | 結束日期 YYYY-MM-DD,超出可分發範圍會被收斂 |
days | 查詢 | integer | 選填 | 250 | 回傳最近 N 根(依 period 計數);與 start 同時給出時以 start 為準 |
adjust | 查詢 | string | 選填 | none | none(預設)/ qfq 前復權 |
請求範例
# 訪客呼叫把這一行刪掉即可
curl -s "https://us2.ninequantai.com/v1/kline/QQQ.US?period=day&days=30&adjust=none" \
-H "Authorization: Bearer YOUR_API_KEY"回應範例
{
"code": 0,
"message": "ok",
"data": {
"symbol": "QQQ.US",
"name": "纳斯达克100",
"market": "US",
"currency": "USD",
"period": "day",
"adjust": "none",
"adjust_applied": false,
"venue_mode": "consolidated",
"venue_mode_label": "合并口径(全市场)",
"delayed": true,
"as_of": "2026-09-03",
"timeliness": { "mode": "eod_only", "delayed": true, "label": "T+1 收盘数据" },
"start": "2026-07-24",
"end": "2026-09-03",
"count": 30,
"bars": [
{ "ts": "2026-07-24", "open": 690.41, "high": 692.63, "low": 682.48, "close": 684.23, "volume": 42876658 },
{ "ts": "2026-07-27", "open": 691.68, "high": 692.3, "low": 675.945, "close": 682.12, "volume": 42681473 },
{ "...": "共 30 根,其余略" },
{ "ts": "2026-09-03", "open": 710.85, "high": 718.915, "low": 709.69, "close": 717.67, "volume": 29449781 }
]
}
}範例取自真實呼叫,為便於閱讀裁剪了陣列長度。
可能的錯誤
400參數不合法:日期格式、period 取值、批次標的數超上限等404標的或記錄不存在429觸發流量限制502上游資料來源暫時無法使用
線上試用
填好參數直接發一次真實請求。它會消耗你目前身分的額度,和線上呼叫完全一樣。
還沒發過請求。點上面的按鈕試一次。
/v1/intraday/{symbol}目前部署下無法使用分時資料
當日分時 K 線
盤中資料的對外分發需要交易所額外授權。分發模式為 eod_only 時本端點回傳 403 —— 這不是你的參數寫錯了,而是這個部署還沒有開放盤中分發。授權落實後把分發模式改成 delayed 或 realtime 即可,端點與欄位不變。
目前分發模式為 eod_only:這個端點會回傳 403。原因是盤中資料的對外分發需要交易所額外授權 —— 不是你的參數寫錯了。授權落實後把分發模式改成 delayed 或 realtime 即可,端點路徑與欄位一律不變。
參數
| 參數 | 位置 | 型別 | 必填 | 預設 | 說明 |
|---|---|---|---|---|---|
symbol | 路徑 | string | 必填 | — | 標的代碼 |
date | 查詢 | string | 選填 | — | 交易日 YYYY-MM-DD,預設最近可分發交易日 |
interval | 查詢 | string | 選填 | 1m | 分時粒度,如 1m |
請求範例
# 訪客呼叫把這一行刪掉即可
curl -s "https://us2.ninequantai.com/v1/intraday/QQQ.US?interval=1m" \
-H "Authorization: Bearer YOUR_API_KEY"回應範例
{
"code": 403,
"message": "分时数据暂不对外提供",
"data": null
}範例取自真實呼叫,為便於閱讀裁剪了陣列長度。
可能的錯誤
400參數不合法:日期格式、period 取值、批次標的數超上限等403目前身分沒有這項權限404標的或記錄不存在429觸發流量限制502上游資料來源暫時無法使用
線上試用
填好參數直接發一次真實請求。它會消耗你目前身分的額度,和線上呼叫完全一樣。
還沒發過請求。點上面的按鈕試一次。
/v1/static/{symbol}靜態資訊
標的靜態屬性與本地歷史涵蓋區間
除了名稱、類型、主要交易所這些靜態屬性,還回傳本地已入庫的日線區間(history_start / history_end),方便你在發起回測前先確認資料夠不夠。已下市標的同樣回傳,並在 note 裡註明。
參數
| 參數 | 位置 | 型別 | 必填 | 預設 | 說明 |
|---|---|---|---|---|---|
symbol | 路徑 | string | 必填 | — | 標的代碼 |
請求範例
# 訪客呼叫把這一行刪掉即可
curl -s "https://us2.ninequantai.com/v1/static/QQQ.US" \
-H "Authorization: Bearer YOUR_API_KEY"回應範例
{
"code": 0,
"message": "ok",
"data": {
"symbol": "QQQ.US",
"raw_symbol": "QQQ",
"market": "US",
"name": "纳斯达克100",
"asset_type": "etf",
"primary_venue": "XNAS",
"currency": "USD",
"listed_on": null,
"delisted_on": null,
"is_delisted": false,
"is_popular": true,
"lot_size": 40,
"status": "active",
"history_start": "2024-07-01",
"history_end": "2026-09-03",
"venue_mode": "consolidated",
"note": null
}
}範例取自真實呼叫,為便於閱讀裁剪了陣列長度。
可能的錯誤
400參數不合法:日期格式、period 取值、批次標的數超上限等404標的或記錄不存在429觸發流量限制502上游資料來源暫時無法使用
線上試用
填好參數直接發一次真實請求。它會消耗你目前身分的額度,和線上呼叫完全一樣。
還沒發過請求。點上面的按鈕試一次。
/v1/batch批次查詢
一次查詢多個標的
單一標的失敗不會讓整次請求失敗:成功的結果在 results,失敗原因逐條列在 errors 裡,便於定位是哪個代碼寫錯了,而不是整批一起重來。單次標的數上限由方案決定,見上方額度表。
參數
| 參數 | 位置 | 型別 | 必填 | 預設 | 說明 |
|---|---|---|---|---|---|
symbols | 請求主體 | string[] | 必填 | — | 標的代碼陣列,依去重後計數 |
type | 請求主體 | string | 選填 | quote | quote / static / kline |
period | 請求主體 | string | 選填 | day | type=kline 時生效 |
adjust | 請求主體 | string | 選填 | none | type=kline 時生效 |
days | 請求主體 | integer | 選填 | — | type=kline 時每個標的回傳的根數 |
請求範例
# 訪客呼叫把這一行刪掉即可
curl -s -X POST "https://us2.ninequantai.com/v1/batch" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"symbols": [
"QQQ.US",
"SPY.US",
"NOPE.US"
],
"type": "quote"
}'回應範例
{
"code": 0,
"message": "ok",
"data": {
"type": "quote",
"requested": 3,
"succeeded": 2,
"failed": 1,
"distribution_mode": "eod_only",
"results": {
"QQQ.US": { "symbol": "QQQ.US", "last": 717.67, "change_pct": 1.1886, "as_of": "2026-09-03", "...": "字段与 /v1/quote 相同" },
"SPY.US": { "...": "同上" }
},
"errors": [
{ "symbol": "NOPE.US", "code": 404, "message": "未找到标的 NOPE.US" }
]
}
}範例取自真實呼叫,為便於閱讀裁剪了陣列長度。
可能的錯誤
400參數不合法:日期格式、period 取值、批次標的數超上限等429觸發流量限制502上游資料來源暫時無法使用
線上試用
填好參數直接發一次真實請求。它會消耗你目前身分的額度,和線上呼叫完全一樣。
還沒發過請求。點上面的按鈕試一次。
/v1/symbols標的搜尋
依代碼或名稱模糊搜尋標的
代碼精確命中排最前,其次是代碼前綴,最後才是名稱命中。不傳 q 時回傳熱門標的,適合做搜尋框的初始狀態。結果包含已下市標的,只是排序上讓位於在營標的。
參數
| 參數 | 位置 | 型別 | 必填 | 預設 | 說明 |
|---|---|---|---|---|---|
q | 查詢 | string | 選填 | — | 關鍵字,比對代碼前綴或名稱片段 |
market | 查詢 | string | 選填 | US | 市場代碼,目前僅支援 US |
limit | 查詢 | integer | 選填 | 20 | 回傳筆數上限,預設 20,最大 100 |
請求範例
# 訪客呼叫把這一行刪掉即可
curl -s "https://us2.ninequantai.com/v1/symbols?q=QQ&market=US&limit=2" \
-H "Authorization: Bearer YOUR_API_KEY"回應範例
{
"code": 0,
"message": "ok",
"data": {
"query": "QQ",
"market": "US",
"total": 30,
"count": 2,
"items": [
{
"symbol": "QQQ.US",
"raw_symbol": "QQQ",
"market": "US",
"name": "纳斯达克100",
"asset_type": "etf",
"primary_venue": "XNAS",
"currency": "USD",
"listed_on": null,
"delisted_on": null,
"is_delisted": false,
"is_popular": true
},
{ "...": "共 2 条,其余略" }
]
}
}範例取自真實呼叫,為便於閱讀裁剪了陣列長度。
可能的錯誤
400參數不合法:日期格式、period 取值、批次標的數超上限等429觸發流量限制502上游資料來源暫時無法使用
線上試用
填好參數直接發一次真實請求。它會消耗你目前身分的額度,和線上呼叫完全一樣。
還沒發過請求。點上面的按鈕試一次。
/v1/backtest執行回測
用內建策略跑一次回測
與網頁版回測共用同一套引擎,同參數同版本必然重現同結果。策略參數既可以放進 params 巢狀給,也可以直接平鋪在頂層(兩者同時出現時以 params 為準)。預設回傳 K 線與成交明細,只要那十幾個指標時把 include_klines / include_equity 設為 false,能省掉大部分頻寬。
參數
| 參數 | 位置 | 型別 | 必填 | 預設 | 說明 |
|---|---|---|---|---|---|
symbol | 請求主體 | string | 必填 | — | 標的代碼 |
strategy | 請求主體 | string | 選填 | chandelier | 策略代碼,見 GET /v1/strategies |
time_range | 請求主體 | string | 選填 | 1Y | 預設區間:YTD / 1M / 3M / 6M / 1Y / 2Y / 3Y / 4Y / 5Y / 6Y / 7Y / 8Y / 10Y / MAX |
start | 請求主體 | string | 選填 | — | 起始日期 YYYY-MM-DD,給了就忽略 time_range |
end | 請求主體 | string | 選填 | — | 結束日期 YYYY-MM-DD |
params | 請求主體 | object | 選填 | — | 策略參數物件,依 params_schema 驗證 |
execute_on | 請求主體 | string | 選填 | close | 成交時點:close=訊號日收盤成交(預設);next_open=訊號次日開盤成交(更接近實際交易) |
cost | 請求主體 | object | 選填 | — | 交易成本 {commission_rate, min_commission, slippage_bps}。不傳則三項全為 0 —— 預設口徑不計成本,結果裡的 notes 會帶 no_cost_model 說明這件事 |
include_klines | 請求主體 | boolean | 選填 | true | 是否回傳 K 線陣列 |
include_trades | 請求主體 | boolean | 選填 | true | 是否回傳成交明細 |
include_equity | 請求主體 | boolean | 選填 | true | 是否回傳淨值曲線 |
請求範例
# 訪客呼叫把這一行刪掉即可
curl -s -X POST "https://us2.ninequantai.com/v1/backtest" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"symbol": "QQQ.US",
"strategy": "chandelier",
"time_range": "1Y",
"params": {
"sma_period": 100
},
"execute_on": "close",
"include_klines": false,
"include_trades": true,
"include_equity": false
}'回應範例
{
"code": 0,
"message": "ok",
"data": {
"symbol": "QQQ.US",
"time_range": "1Y",
"strategy": "chandelier",
"engine_version": "1.1.0",
"venue_mode": "consolidated",
"start_date": "2025-09-08",
"end_date": "2026-09-04",
"num_trades": 8,
"win_rate": 50.0,
"total_pnl_pct": 8.56,
"annualized_pct": 8.66,
"max_drawdown_pct": 11.12,
"sharpe": 0.624,
"profit_factor": 1.84,
"buy_hold_pnl_pct": 24.2,
"excess_return_pct": -15.64,
"params": { "sma_period": 100, "atr_period": 14, "entry_mult": 2.0, "exit_mult": 3.0, "entry_mode": "chandelier", "trail_mode": "rolling", "...": "其余略" },
"cost": {
"commission_rate": 0.0,
"min_commission": 0.0,
"slippage_bps": 0.0,
"initial_capital": 100000.0,
"execute_on": "close"
},
"data_range": { "actual_start": "2025-09-08", "actual_end": "2026-09-04", "bars": 251, "truncated": false },
"data_freshness": { "distribution_mode": "eod_only", "as_of": "2026-09-04", "delayed": true },
"notes": [
{ "code": "no_cost_model", "level": "info", "message": "本次未计成本。实盘会有手续费与滑点…" }
],
"trades": [{ "seq": 1, "entry_date": "2025-09-08", "entry_price": 578.87, "exit_date": "2025-10-10", "exit_price": 589.5, "pnl_pct": 1.8363363103978347, "exit_reason": "stop", "...": "其余略" }],
"disclaimer": "数据与回测结果仅供研究参考,不构成任何投资建议。"
}
}範例取自真實呼叫,為便於閱讀裁剪了陣列長度。
可能的錯誤
400參數不合法:日期格式、period 取值、批次標的數超上限等404標的或記錄不存在429觸發流量限制502上游資料來源暫時無法使用
線上試用
填好參數直接發一次真實請求。它會消耗你目前身分的額度,和線上呼叫完全一樣。
還沒發過請求。點上面的按鈕試一次。
機器可讀文件
介面的 OpenAPI 描述隨服務一起發布,可以直接匯入 Postman / Insomnia,或者用它產生用戶端程式碼。那份文件裡的流量限制說明同樣由伺服器方案設定算出,不會與本頁對不上。
資料時效聲明
目前分發模式:eod_only目前提供 T+1 及更早的日線資料,盤中與即時資料暫未開放。
交易所對資料的對外轉發有明確規則:T+1 及更早的收盤資料可以免費分發,即時與盤中資料需要額外授權。授權落實之前,我們寧可不提供,也不含糊其辭地給一份說不清來源的資料。授權到位後這裡會改成延遲或即時,端點路徑與欄位一律不變。
每個行情回應都帶 timeliness 欄位,如實標註這批資料的時效 —— 能不能用於即時決策,看回應就知道,不必靠讀文件猜。
資料口徑隨資料一起回傳
每筆行情都帶 venue_mode。合併口徑(consolidated)彙總全部交易場所,單一交易所口徑(single_venue)只有一家 —— 實測兩者收盤價最大偏差 7.1%,單場成交量僅為合併量的 23%~34% 且隨季度漂移,single_venue 因此一律拒絕進入回測。行情介面只回傳合併口徑;回測要取 2024-07 之前的美股歷史時,會接上主場常規時段重建口徑(primary_session:收盤價取交易所官方收盤價,實測與合併口徑逐日相等;開高低由主場分鐘線重建,偏差 ≤0.03%;成交量為單場口徑),並在結果裡掛 mixed_session_source 把這件事講清楚。
標的庫含已下市標的
下市標的照常可查,並標註 is_delisted。回測不做倖存者偏差過濾 —— 把下市公司剔掉,歷史報酬會憑空變好看。
平台沒有下單能力
我們不對接任何券商實盤交易,介面裡也不會出現下單、部位、資金相關的端點。
免費開放
下面這些端點訪客無需註冊即可呼叫,依來源 IP 計額度。
可用端點
- GET/v1/quote/{symbol}報價
- GET/v1/kline/{symbol}歷史 K 線
- GET/v1/intraday/{symbol}分時資料目前部署下無法使用
- GET/v1/static/{symbol}靜態資訊
- POST/v1/batch批次查詢
- GET/v1/symbols標的搜尋
- POST/v1/backtest執行回測
流量限制規則(訪客檔)
- 報價30 次/分
- K 線30 次/分
- 分時無法使用
- 靜態資訊30 次/分
- 標的搜尋30 次/分
- 批次查詢10 次/分
- 回測5 次/分
- 參數最佳化無法使用
每個類別各有一個獨立計數桶,不共用。數字來自 GET /api/plans 的訪客檔,與定價頁同源。
註冊後可提高用量
- 額度改依 API Key 計,不再與同一出口 IP 的其他人共用
- 單端點、批次與回測額度提高到註冊檔,具體數字見上方額度表
- 控制台可查每日呼叫量,回測記錄可儲存、分享
常見問題
命中本地庫的歷史 K 線與報價是毫秒級回傳。本頁頂部四格就是你這次開啟頁面時實測到的往返耗時,重新整理一次即可自己重現。我們不寫「小於 50 毫秒」這類沒有量測依據的承諾。
目前只支援美股與美股 ETF。港股與 A 股在規劃中,尚未實作,介面現在只接受 market=US。上線時間會在本頁如實更新,不做沒影的承諾。
不需要。所有 /v1 端點訪客都能直接呼叫,依來源 IP 計額度(單端點 30 次/分、批次 10 次/分)。註冊只要電子郵件驗證碼,註冊後依 API Key 計額度(單端點 60 次/分、批次 20 次/分),並且能在控制台看到呼叫記錄。
每日美股收盤後更新,隔日(T+1)可取。目前提供 T+1 及更早的日線資料,盤中與即時資料暫未開放。資料已更新至 2026/09/04,合併口徑日線自 2024/07/01 起入庫。盤中與即時資料需要交易所額外授權,暫未開放。
立即開始使用
不需要任何憑證,複製右邊這行指令就能拿到第一份資料。想要更高額度、呼叫統計與回測記錄,用電子郵件驗證碼註冊一個帳號即可,註冊時自動簽發 API Key。
curl -s "https://us2.ninequantai.com/v1/quote/AAPL.US"以訪客身分直接呼叫,依來源 IP 計額度。
聯絡我們
接入問題、額度需求、資料合作都可以直接寫信。
微信諮詢
公眾號與客服微信正在申請中
待公布