绕过 DPI、零成本搭建 A 股智能 Agent 工具:一个大盘方向判定 + 策略适配的实战方案
·
# 绕过 DPI、零成本搭建 A 股智能 Agent 工具:一个大盘方向判定 + 策略适配的实战方案
> 国内做 AI + 量化的人都知道:东方财富 API 被 DPI 拦截、AKShare 函数名随版本漂移、腾讯财经只有 GBK 编码零文档。本文分享一套在国内网络环境下从零搭建、全部跑通的方案。
---
## 一、痛点:为什么你调不通
如果你用 AI Agent 做 A 股分析,大概率踩过这些坑:
```python
# 你以为能跑
import akshare as ak
df = ak.stock_zh_a_hist(symbol="002156")
# 实际:EastMoney 连接超时(DPI 拦截)
# 换个接口
ak.stock_margin_sse(date="20260520")
# 实际:列名 '日期' 不存在(函数名/输出格式漂移)
```
**根本原因**:国内数据源的 API 设计不是为了 Agent 消费的——没有 schema 约束、没有语义层、没有错误恢复。Agent 调一次崩一次。
---
## 二、方案:三层架构
我在 Hermes Agent 上搭了一套完整的信息升级流水线,四个 cron 任务每天自动跑:
```
P0 机构行为监控 → AKShare 龙虎榜/融资融券/ETF
P1 商品价格异动 → AKShare futures_spot_price(54品种)
P2 监管信号监控 → 深交所 JSON API(问询函/关注函)
↓
P3 情报融合日报 → 交叉验证 + 策略建议 → 飞书推送
```
但 P3 的真正价值不只是日报推送。我把核心引擎封装成了 **三个 Agent 原生工具**,任何 AI Agent 都能直接调用:
| 工具名 | 功能 | 输出 |
|--------|------|------|
| `a_stock_market_regime` | 大盘方向判定 | 🟢多头 / 🔴空头 / 🟡震荡 |
| `a_stock_advice` | 个股策略建议 | 趋势跟踪/狙击等待/空仓 + MA20 价位 |
| `a_stock_daily_briefing` | 每日情报融合 | 完整日报 |
---
## 三、核心创新:策略自适应分层
传统的量化策略是固定的——要么是趋势跟踪、要么是均值回归。但市场状态在变,策略也应该变。
**这套方案的底层逻辑**:
```
市场状态判定 → 策略自动切换
🟢 多头确认(指数 > MA20,MA20 向上)
→ 趋势跟踪:回踩 MA10/MA20 即是买点
🔴 空头确认(指数 < MA20,MA20 向下)
→ 空仓等待:不做多
🟡 震荡/不明
→ 狙击等待:预设精确买点,等市场送上门
```
判定逻辑基于三个客观指标:
1. **位置**:指数 vs MA20
2. **方向**:MA20 的线性回归斜率
3. **确认**:近 5 日均量 / 20 日均量(放量 > 1.2 倍)
---
## 四、数据源(全部国内,零成本)
| 数据 | 来源 | 格式 | 坑 |
|------|------|------|-----|
| K 线(前复权) | 腾讯财经 web.ifzq.gtimg.cn | JSON/GBK | GBK 编码 |
| 大盘指数 | 同上 | JSON/GBK | 同上 |
| 商品现货 | AKShare futures_spot_price | DataFrame | 函数名漂移 |
| 龙虎榜 | AKShare stock_lhb_jgstatistic_em | DataFrame | 东方财富超时 |
| 问询函 | 深交所 szse.cn/api | JSON | 无官方文档 |
| ETF 份额 | AKShare fund_etf_fund_daily_em | DataFrame | 同东方财富 |
**零海外 API 调用,零付费数据源。** 所有数据源都在国内网络下跑通。
---
## 五、安装和使用
### 安装
```bash
# 克隆仓库
git clone https://github.com/Jipin-ai/Ji_pin.git
cd Ji_pin/a-stock-intel
# 安装依赖
pip install numpy akshare requests
# 拷贝工具到 Hermes Agent tools 目录
cp a_stock_intel_tool.py ~/.hermes/hermes-agent/tools/
```
### 在 Hermes Agent 中使用
重启 Agent 或 `/reset` 后,工具自动可用:
```
你: 现在大盘方向?通富微电怎么操作?
Agent 自动调用 a_stock_market_regime + a_stock_advice:
📊 大盘方向:🟢 多头(弱势)
上证指数 4160 MA20:4141
创业板指 3919 MA20:3802
→ 策略:趋势跟踪
🎯 通富微电(002156) ¥62.27
→ 🟢 趋势跟踪
回踩 MA20(≈55) 附近可建仓,不等深度回调
止损:MA20 × -3%
🎯 东方财富(300059) ¥19.67
→ 🟡 等回踩
大盘多头但个股偏弱,等待站上 MA20
```
### 独立使用(不依赖 Hermes)
```python
from a_stock_intel_tool import _market_regime, _stock_advice
r = _market_regime()
print(f"大盘: {r['summary']}") # bull
a = _stock_advice('002156', 'bull')
print(f"{a['strategy']}: {a['action']}")
# 🟢 趋势跟踪: 回踩 MA20(55) 附近可建仓
```
---
## 六、技术细节:绕过 DPI 的关键
本机东方财富 API 被 DPI 拦截(`datacenter-web.eastmoney.com` 连接超时)。解决方案:
1. **K 线数据**:放弃 AKShare 的 eastmoney 后端,改用腾讯财经 `web.ifzq.gtimg.cn`
2. **编码处理**:腾讯财经返回 GBK 编码,需显式 `resp.encoding = 'gbk'`
3. **代码前缀**:沪市 `sh` + 6 位代码,深市 `sz` + 6 位代码
4. **龙虎榜数据**:仍走 AKShare(东方财富后端),失败时静默降级,不中断整体流程
---
## 七、限制与规划
**当前限制**:
- 仅覆盖深交所监管数据(问询函),上交所待接入
- 龙虎榜/ETF 数据在 DPI 拦截时会静默为空
- 策略仅支持多头方向(暂无做空/对冲信号)
**下一阶段**:
- 接入海关进出口数据(stats.customs.gov.cn)
- 上交所问询函 + IPO 审核进度
- 信号置信度评分(历史准确率回测)
---
## 八、关于「工具标准化」的思考
这篇文章不只是分享代码。更深层的问题是:
> 为什么国内没有一个「AKShare 级别的 Agent 工具标准化层」?
MCP 协议是 Anthropic 定义的,OpenAI 的工具调用格式也在变。国内开发者每次适配都在填同样的坑——DPI 拦截、编码问题、无官方 SDK。
**这件事不需要等大厂。** 三个 Agent 工具 + 六个国内数据源 + 一套策略适配逻辑,已经是一个可工作的「Agent-native 中间件」原型。
---
**代码仓库**:[github.com/Jipin-ai/Ji_pin/tree/main/a-stock-intel](https://github.com/Jipin-ai/Ji_pin/tree/main/a-stock-intel)
**依赖**:Python 3.10+, numpy, akshare, requests(全部 pip 安装)
**许可证**:MIT — 随意用、改、分发。
更多推荐



所有评论(0)