发布 2026-10-14 · 更新 2026-10-25
把 AI Agent 接上行情数据
给 AI Agent 一条能拉结构化行情数据的通路,然后让它分析。一次可运行的实操 —— 把定义页那个循环真正闭上。
这篇要做什么
定义页最后留下了一个问题:你知道怎么问吗 —— 以及怎么判断答案靠不靠谱吗?
这篇走完前半句:给 AI Agent 一条可靠的通路,去拉结构化行情数据,让它算出来再解释,而不是凭记忆猜。
读完你会有一个能回答「这只票最近一个月怎么样」的 Agent —— 用的是代码算出来的数字,不是模型背下来的印象。
规范页那条纪律贯穿全程:代码算数,模型叙述。
前置条件
你需要:
- 一个能调用工具(tool)的 AI Agent(Claude Code、Cursor、Codex,或任何支持 MCP 的客户端)
- 一个 Agent 能访问到的行情数据源
- 大约十分钟
不需要量化背景。能说清你要什么,就够开始了。
第一步 —— 选一条数据路径
Agent 拿到行情数据,一共四条路。它们的核心差别只有一件事:回来的东西能不能验证?
| 路径 | 怎么工作 | 可验证? |
|---|---|---|
| 抓网页 | Agent 读 HTML | ✗ 页面改版就断;数字无法复现 |
| 本地数据文件 | 你下载 CSV,Agent 读 | ✓ 但下载那一刻就过时了 |
| REST API | Agent 调接口,拿 JSON | ✓ 结构化、可重复 |
| MCP 工具 | Agent 把数据源当工具调用 | ✓ 结构化,且 Agent 知道这个工具存在 |
第一次跑,REST API 最短。等你清楚自己要什么之后,MCP 是更好的长期方案。
第二步 —— 先手动拉一个数
在让 Agent 介入之前,先证明数据源是通的。这个端点不需要 Key:
curl "https://api.ashareapi.com/v1/quote?code=sh600519"
你会拿到一个 JSON 信封,data 是一段日线数组,最新的在最前 —— 所以最新收盘价是 data[0].last。如果这里能返回数字,剩下的都是接线活。如果这里不通,就停在这里 —— 任何 Agent 都救不活一个不响应的数据源。
开始循环调用之前要知道一件事:匿名访问限每分钟 5 次、单次最多 250 条。够你把这页走一遍,不够反复试。要循环就加一个 Key。
第三步 —— 把工具给 Agent
这一步的重点不是某个具体工具,而是:让 Agent 一律通过工具拿数字,绝不凭记忆生成。
如果你的客户端支持 MCP,指向数据源,让它自己发现工具:
{
"mcpServers": {
"ashareapi": {
"type": "http",
"url": "https://api.ashareapi.com/mcp"
}
}
}
这是 Claude Code 的写法。Cursor 用同一个对象、去掉 type;Codex 用 TOML([mcp_servers.ashareapi] + url)。要用付费工具就加 "headers": { "Authorization": "Bearer ct-..." }。
如果你的客户端不支持 MCP,一个小脚本里的普通 REST 调用同样管用:
import httpx
def quote(code: str) -> dict:
r = httpx.get("https://api.ashareapi.com/v1/quote", params={"code": code})
r.raise_for_status()
return r.json()["data"]
print(quote("sh600519"))
两种方式殊途同归:数字来自一次你能重跑的调用。 这就是工具和故事的全部区别。
第四步 —— 提一个必须用到数字的问题
现在问 Agent 一个逼它用工具的问题:
「用数据源的 quote 工具,拉 sh600519 最近 30 根日线,告诉我最高收盘价和它出现在哪天。」
盯两件事:
- 它调工具了吗? 如果没调就答了,那个数字是编的。
- 你能重跑那次调用、拿到同样的答案吗? 能,就是可复现的 —— 规范页第二条。
第五步 —— 检查答案
这一步大多数教程会跳过。别跳过。
| 检查什么 | 怎么查 |
|---|---|
| 数字来自调用吗? | 看记录里的工具调用。没有调用,就没有数字。 |
| 窗口说清了吗? | 「最近 30 根日线」—— 不是「最近」。 |
| 字段名叫对了吗? | 是 last,不是「价格」。不同字段含义不同。 |
| 能复现吗? | 重跑调用。答案一样,才算结果。 |
一个追溯不到某次调用的数字,不是数据 —— 是文字。
你现在有了什么
你把循环闭上了:Agent 提问 → 工具用数字回答 → 代码计算 → 模型解释。
这是定义页那个问题的前半句。后半句 —— 判断建立在这之上的策略可不可信 —— 是另一篇教程的事:前视偏差防护、成本、幸存者偏差。
门槛从来不是「工具不够强」,而是「你得先学会编程」。 你刚刚没写一行策略就做到了 —— 你描述了你要什么,然后检查了答案。
下一步
- 怎么分辨真假 → 三个问题与六条规范
- 验证一条规则,而不骗自己 → 之后的三个检查