基于《半小时漫画股票实战法》知识库搭建的全栈 A股量化系统,从书本知识到实盘监控的完整闭环。
┌────────────────────────────────────────────────────────────┐
│ 前端层 (Vue 3 + ECharts) │
│ http://127.0.0.1:8000 │
├────────────────────────────────────────────────────────────┤
│ 后端层 (FastAPI) │
│ api.py → 行情接口 / K线接口 / 静态文件 │
├────────────────────────────────────────────────────────────┤
│ Agent 层 │
│ agent.py → 主循环(感知→决策→执行→反馈) │
│ ├─ ai_decider.py → AI决策 (SenseNova 6.7) │
│ ├─ executor.py → 模拟交易执行 + 风控 │
│ ├─ risk_manager.py → 止损5%/仓位20%/单日5次 │
│ ├─ portfolio.py → 持仓管理 + 交易记录 │
│ └─ feedback.py → 胜率统计 + 策略失效检测 │
├────────────────────────────────────────────────────────────┤
│ 策略层 (Backtrader) │
│ strategies.py → 17个交易策略 │
│ backtest.py → 多策略回测引擎 │
├────────────────────────────────────────────────────────────┤
│ 数据层 │
│ data_fetcher.py → 新浪财经 + SQLite缓存 │
│ realtime.py → 实时行情 + 策略信号 │
└────────────────────────────────────────────────────────────┘
- 实时获取 A 股行情(延迟约 3 秒)
- 每只股票实时计算:MA5、MACD、KDJ(K/D/J 三值)
- 综合评分给出买卖建议
- 走势图(ECharts 收盘价 + 成交量)
- 自动 60 秒轮询刷新
17 个可回测策略:
| # | 策略 | 买入逻辑 | 卖出逻辑 | 参数 |
|---|---|---|---|---|
| 1 | MACD 金叉死叉 | DIFF 上穿 DEA | DIFF 下穿 DEA | 12/26/9 |
| 2 | KDJ 超买超卖 | K<20 且金叉 | K>80 且死叉 | 9/3/3 |
| 3 | 5日均线止损 | 站上 5 日线 | 跌破 5 日线 | 5 |
| 4 | BOLL 布林线 | 触及下轨 | 触及上轨 | 20/2 |
| 5 | DMI 趋势 | PDI 上穿 MDI | MDI 上穿 PDI | 14 |
| 6 | PSY 心理线 | PSY ≤ 25 | PSY ≥ 75 | 12 |
| 7 | 乖离率 BIAS | 乖离率 ≤ -5% | 乖离率 ≥ +5% | 5 |
| 8 | SAR 止损 | 价格 > SAR | 价格 < SAR | 0.02/0.2 |
| 9 | 三指标共振 | MACD+KDJ+BOLL 综合评分 | 任一指标走坏 | — |
| 10 | 均线组合 | 5>10>60 多头排列 | 跌破 5/10 | 5/10/60 |
| 11 | 量价背离 | 价创新高量萎缩 | 放量下跌 | 10 |
| 12 | DMI+PSY | DMI 多头且 PSY≤25 | DMI 空头或 PSY≥75 | 14/12 |
| 13 | 三分法 | 分批建仓 | 分批减仓 | — |
| 14 | 麻雀战法 | 小仓位多次低吸 | 小仓位多次高抛 | — |
| 15 | 反弹策略 | 跌幅过大短线反弹 | 短线获利了结 | — |
| 16 | 二线法 | 短期均线上穿长期 | 短期均线下穿长期 | 5/20 |
| 17 | 60日生命线 | 站上 60 日线 | 跌破 60 日线 | 60 |
两套 Agent 实现,分工不同:
agent.py(CLI 单进程):命令行入口,python agent.py [codes...] [--rule],单组合循环扫描。agent_engine.py(Web 后端双引擎):被api.py调用,AI vs 规则两个 1 万元组合并行对比,落库权益曲线。
共同特性:
- 调用 SenseNova 6.7 多模态模型做决策
- 输入:实时行情 + 技术指标 + 持仓状态
- 输出:每只股票操作建议(buy/sell/hold)
- 受风控约束:止损 5%、单股仓位 20%、单日交易 5 次上限
- 支持两种模式:
python agent.py --ai(AI 决策,默认)/python agent.py --rule(规则决策)
系统策略知识来源整理于 book/:
| 文件 | 说明 |
|---|---|
中国股市操练大全.md / .txt |
《中国股市操练大全》源书全文(OCR) |
中国股市操练大全_交易策略.md |
源书逐字提取的策略章节正文(2812 行) |
中国股市操练大全_交易策略_精炼版.md |
提炼为可量化规则的精炼版(含阈值速查表) |
extract_strategies.py |
生成上述策略文档的提取脚本 |
《半小时漫画股票实战法》的知识库同样入库于 book/半小时漫画股票实战法/:
| 文件 | 说明 |
|---|---|
半小时漫画股票实战法.md |
《半小时漫画股票实战法》源书全文(OCR) |
半小时漫画股票实战法_知识库.md |
结构化策略知识库(指标/选股/买卖点) |
策略参数指南.md |
各策略可调参数说明 |
strategy_knowledge.json |
策略知识库结构化 JSON |
output/ 为两本书的 OCR 中间产物(逐页拆分),已被 .gitignore 忽略不再入库。
cd quant
# 安装依赖
pip install -r requirements.txt # pandas/numpy/backtrader/fastapi/uvicorn/gradio/httpx
# 首次运行前:复制配置文件(含自选股与策略开关/参数,不入库)
cp config.example.json config.json
# AI 服务配置:复制 .env.example 为 .env 并填 API 密钥(OpenAI 兼容接口,可切换)
cp .env.example .env # 编辑 AI_API_KEY / AI_BASE_URL / AI_MODEL
# 每日财经新闻 AI 分析日报(新浪+东财双源)
python news_digest.py # 抓当天新闻 + AI 生成日报
python news_digest.py --schedule "08:30" # 纯 Python 定时,每天到点自动跑
# 每日开盘扫描(全市场≈5500只 + 新闻 + 候选策略信号 综合日报)
python daily_scan.py # 立即跑一次
python daily_scan.py --schedule "09:00" # 纯 Python 定时,每个交易日 09:00 自动跑
# 定时任务已内置于 quant-api 服务:每交易日 09:00 自动跑 daily_scan
# 查看状态/手动触发(服务跑在 18000):
curl http://127.0.0.1:18000/api/daily-scan/status
curl -X POST http://127.0.0.1:18000/api/daily-scan/run
# 启动 Web 前端(port 可用环境变量覆盖,默认 8000)
python api.py # http://127.0.0.1:8000
PORT=18000 python api.py # 自定义端口示例
# 运行回测
python backtest.py # 19 个策略全量回测
# 运行 AI Agent (CLI 单进程)
python agent.py 600789 000001 # AI 决策模式(默认)
python agent.py 600789 --rule # 规则决策模式
# 实时行情信号
python realtime.py 600789 000001 --signals
# 运行测试
python tests.py
# Docker 启动
docker compose up -d| 数据 | 接口 | 延迟 | 说明 |
|---|---|---|---|
| 实时行情 | 新浪 hq.sinajs.cn |
~3 秒 | 实时报价 |
| 历史日K线 | 新浪 getKLineData |
收盘后 | 最多 1024 条 |
| 实时分时 | 东财 trends2/get |
实时 | 盘中分时数据 |
| AI 决策 | SenseNova 6.7 | 1-3 秒 | 多模态模型 |
本项目仅供学习和研究,不构成任何投资建议。
- 回测结果不代表未来表现
- 实盘前务必经过充分模拟验证
- 股市有风险,投资需谨慎
最后更新:2026-08-17