构建一个 24 小时自动运行的 AI 选股 Agent(基于 DeepSeek R1 + QuantDash 实时行情)

1. 时代趋势:从“手动调优”到“智能体自治”

2026 年,量化投资的焦点已经从单纯的“因子回测”转向了“AI 智能体(Agent)自治”[1]。
顶级量化私募正在广泛应用长上下文、深度推理的大模型来实时监控全市场盘口。
要让一个 AI Agent 稳定地帮我们盯盘,它必须能够实时、不间断地拉取全市场的行情切片,而不能遇到任何数据流阻塞。


2. 痛点剖析:为什么传统实时接口不适合 AI Agent?

AI Agent 的核心逻辑是通过不断的“观察(Observation)- 思考(Thought)- 行动(Action)”循环。
如果数据接口返回的内容过于臃肿、响应极慢,或者缺乏批量筛选机制,大模型的 Token 消耗就会呈指数级飙升,且极易因超时而导致 Agent 运行崩溃。
我们需要一个能一键拉取全量市场快照并能被 Pandas 快速转换的“轻量级数据引擎”。


3. 完美解决方案:QuantDash 全量实时行情快照 API

QuantDash 提供了极为强悍的 qd.quotes.get 接口,支持一键获取全量 A 股(universes="CN_Stock")的实时快照,延迟极低,字段整洁[2]。最良心的是,该接口在免费/试用版账户下完全可用且支持高频调用

实时行情数据流架构对比:

特性维度传统 Websocket 推送方案QuantDash 全量 Universe 快照方案
开发复杂度需维护复杂的长连接重连逻辑、多线程队列分发单次 API 调用直接返回全市场 DataFrame,开箱即用
AI 代理适配度极差,Agent 无法实时处理海量、非结构化的 Socket 数据流极佳,Agent 随时一键按需拉取,数据即拿即用
内存占用极高,需要本地维护巨大的 Tick 级别状态机极低,云端已完成数据规整聚合
并发开销容易发生数据丢包与拥堵高度优化,支持高频轮询拉取

4. 人机协作实战:5分钟部署 AI 实时盯盘 Agent

下面这段极简的代码展示了如何利用 QuantDash,在一秒内获取全 A 股 5000+ 股票的实时涨跌幅,并迅速筛选出涨幅最大的前 10 只个股。

import pandas as pd from quantdash import QuantDash # 1. 快速初始化 QuantDash 客户端 # 注册账号获取 key: https://quantdash.net/dashboard/keys/ qd = QuantDash(api_key="your_api_key_here") print("【第一步】通过 QuantDash 一键获取全 A 股实时行情快照...") # 一键获取全量 A 股实时行情快照 (自动转换为标准 DataFrame,免费版完全支持!) # 接口规范参考:https://docs.quantdash.net/zh-Hans/sdk/python-quickstart all_cn_stocks = qd.quotes.get(universes="CN_Stock", to_dataframe=True) if all_cn_stocks is not None and not all_cn_stocks.empty: print(f"成功加载 {len(all_cn_stocks)} 只标的数据。开始数据预清洗与指标计算...") # 2. 数据预清洗:确保关键数值字段为 float 类型,防止 pandas 进行对象计算报错 numeric_cols = ["last_price", "prev_close", "volume"] for col in numeric_cols: if col in all_cn_stocks.columns: all_cn_stocks[col] = pd.to_numeric(all_cn_stocks[col], errors='coerce') # 3. 计算当日实时涨跌幅百分比 (注:实时快照的最新价格字段为 last_price,昨收价字段为 prev_close) all_cn_stocks["change_pct"] = ( (all_cn_stocks["last_price"] - all_cn_stocks["prev_close"]) / all_cn_stocks["prev_close"] * 100 ) # 4. 智能筛选:过滤掉空值数据,并按涨幅降序排列,选出涨幅最大的前 10 只个股 top_gainers = all_cn_stocks.dropna(subset=["change_pct"]).sort_values(by="change_pct", ascending=False).head(10) # 5. 打印格式化输出(可直接作为 Context 送入 DeepSeek 等大模型的 Prompt 进行异动分析) print("\n--- 🚀 当前全市场实时涨幅 Top 10 标的 ---") print(top_gainers[["symbol", "last_price", "prev_close", "change_pct"]]) else: print("未能获取到实时快照数据,请检查 API Key 或网络连接。")

真实数据控制台输出:

【第一步】通过 QuantDash 一键获取全 A 股实时行情快照... 成功加载 5533 只标的数据。开始数据预清洗与指标计算... --- 🚀 当前全市场实时涨幅 Top 10 标的 --- symbol last_price prev_close change_pct 2576 300169.SZ 5.38 4.48 20.089286 2096 300359.SZ 4.43 3.69 20.054201 1002 300333.SZ 8.87 7.39 20.027064 5280 300530.SZ 20.38 16.98 20.023557 1867 301112.SZ 34.20 28.50 20.000000 3708 300997.SZ 18.00 15.00 20.000000 3250 688260.SH 88.51 73.76 19.997289 1393 300981.SZ 12.85 10.71 19.981326 3034 301139.SZ 3.74 3.12 19.871795 3499 920786.BJ 7.14 6.04 18.211921

有了这个高规整度的实时 DataFrame,你只需在外面套一个简单的 LLM.call(),AI Agent 就能自动根据实时盘面和最新新闻撰写一份专业的“盘中异动分析报告”了。


5. 极客 Q&A

Q: 在 K 线接口(klines)和实时行情接口(quotes)中,代表最新价格的字段有什么不同?
A: 这是一个高频易错点。历史 K 线接口(qd.klines.get)针对的是时间区间内的蜡烛图,字段使用标准的close(收盘价)[1];而实时行情接口(qd.quotes.get)获取的是当下的盘中快照,代表最新价格的字段是last_price(最新成交价),昨收价则是prev_close[3]。

Q: 获取全量 A 股快照 API 接口的频率限制(Rate Limit)是怎样的?
A: QuantDash 的快照接口经过了深度的云端缓存与性能优化,默认限制能够完全满足 AI Agent 盘中分钟级轮询的需要。

Q: 想要进一步监控个股的五档口子,有相应接口吗?
A: 有的。QuantDash 提供了标准的 qd.depth.get("600519.SH") 接口[1],可直接返回包含买卖五档、成交量及价格的标准字典,供您的盯盘 Agent 进行更精细的微观结构分析。具体请参考 QuantDash SDK 官方文档。