📈 A股智能量化工作台
自托管、零运维的 A 股「选股 + 监控 + 回测」量化工作台
🚀 开箱即用(单容器 / Free 模式无需 Key) 能力驱动,适配 Free → Expert 全档位订阅 · 🔌 自由接入第三方扩展数据(例如 Tushare、自有量化项目数据)
⚠️说明:目前项目默认接入内置数据源。自有数据源需二次开发修改字段映射即可;后续需求人多的话可能会实现切换数据源功能。
🎯 项目定位
让任何个人散户 / 量化爱好者,零运维地拥有一套与自己订阅档位严格匹配的 A 股分析、选股、监控工作台。
任意接入第三方数据(Tushare 等),页面可视化自定义配置扩展数据表。
项目所需配置:
| 配置项 | 说明 | 是否必填 |
|---|---|---|
| 数据源 API Key | 数据源凭证,留空启用 Free 模式(无需注册即可体验) | 可选 |
| AI 大模型 API Key | 用于 AI 生成策略、个股分析(开发中)、行情分析(开发中),任意 OpenAI 兼容接口,留空关闭 | 可选 |
| 看板 Dashboard | 策略 Screener |
![]() |
![]() |
| 回测 Backtest | 监控中心 Monitor |
![]() |
![]() |
| 连板梯队 Limit Ladder | 概念分析 Concept |
![]() |
![]() |
⚠️ 🚧 项目持续优化,功能陆续开放,敬请期待。
明确不做:不对标同花顺/通达信的全功能股票软件;不内置任何「AI 荐股 / 涨停预测」。
✨ 核心功能
🔍 选股引擎(Screener)
20 个内置策略 —— 每个策略是一个独立 Python 文件(backend/app/strategy/builtin/),基于 Polars 表达式实现:
| 类型 | 代表策略 |
|---|---|
| 趋势 | 趋势突破 · 均线多头 · 缩量回踩 |
| 形态 | MA 金叉 · MACD 金叉放量 · 布林突破 |
| 量价 | 量价齐升 · 高换手强势 · 强势高开 |
| 涨停 | 连板股 · 断板反包 · 逼近涨停 · 涨停动量 |
| 反转 | 超跌反弹 · 超卖反转 · 新低反转 |
| 波动 | 低波动龙头 · 回踩 MA20 反弹 |
- 自定义信号系统 —— 在 UI 上用
字段 + 操作符 + 阈值组合(entry / exit / both),编译成 Polars 表达式热加载,无需写代码即可定义自己的买卖信号。 - 策略商店 —— 内置策略 + 用户自定义策略统一管理,支持参数覆盖(
params暴露阈值)。
➕ 添加自己的策略
除 20 个内置策略外,你可以用两种方式扩展:
| 方式 | 说明 | 前提 |
|---|---|---|
| 🤖 AI 生成 | 用自然语言描述策略思路,LLM 读取 strategy-guide.md 自动生成完整 Polars 策略文件(经 ast 安全校验,限定 import polars as pl)。生成后落入 data/strategies/ai/,即刻可用 |
需先在 配置 中填入 AI Key |
| 📝 代码自定义 / 策略迁移 | 参照 策略开发指南 的文件结构模板,把你已有的自有策略改写为 Polars 文件放入 data/strategies/custom/(文件名/ID 建议 custom_时间戳),引擎自动发现加载——轻松迁移你现成的量化项目策略,无需从头重写 |
无 |
| 🎛️ 自定义信号配置 | 不写代码,在 UI 上用 字段 + 操作符 + 阈值 组合(entry / exit / both),编译成 Polars 表达式热加载,即可定义自己的买卖信号 |
无 |
引擎按
source标记来源:builtin(内置)/custom(手写或迁移)/ai(生成),三者统一进入策略商店管理。
📊 指标流水线(Indicators)
原生 Polars 向量化计算,全 A 股一次扫表落盘为 enriched Parquet:
| 分类 | 指标 |
|---|---|
| 均线系 | MA(5/10/20/30/60)· EMA(5/10/12/20/26/30/60) |
| 趋势系 | MACD(DIF/DEA/HIST)· 动量(5/10/20/30/60d)· 布林带(上/下轨) |
| 震荡系 | RSI(可配周期)· KDJ(K/D/J) |
| 波动系 | ATR(14)· 年化波动率(20d)· 振幅 |
| 量能系 | 量比(5d/10d)· 量均线 |
| 涨跌停 | 涨停信号 · 连板数 · 涨跌幅 · 涨跌额 |
| 原子信号 | MA 金叉/死叉 · MA20 突破/跌破 · MACD 金叉/死叉 · N 日新高/新低 · 布林突破 |
| 复权 | 基于除权因子自动计算前复权(ex_factor / cum_factor),回测与指标一致 |
🧪 回测引擎(Backtest)
基于 vectorbt(全项目唯一一处 pandas 出现地):
- 三种回测模式:个股 · 策略组合 · 自由信号组合
- 真实约束:T+1 · 手续费 · 滑点(基点) · 止损 · 最大持仓天数
- 组合管理:最大持仓数 · 最大敞口 · 等权 / 自定义仓位
- SSE 流式进度:长任务实时推送进度,支持刷新 / 切页后重连恢复(相同参数任务只启动一次)
- 统计输出:净值曲线 · 夏普 · 最大回撤 · 胜率 · 每笔交易明细
📡 监控中心(Monitor)
统一监控规则引擎 —— 一个页面管理所有类型的监控,实时推送 + 持久化触发记录:
- 四类监控:策略监控 · 个股信号监控(选信号即加) · 个股价格/涨跌监控 · 全市场异动监控
- 灵活条件:多条件 AND/OR 组合 + 冷却期去重(防刷屏) + 严重级别(info/warn/critical)
- 多入口配置:监控中心页面新建规则 · 个股详情页「加监控」· 策略卡片一键开启
- 实时 SSE 推送:命中规则后右下角弹窗通知(可配声效) + 持久化到
alerts.jsonl - 触发记录:时间倒序展示,支持按来源过滤 · 单条删除 · 清空 · 点击查看个股日K
- 菜单未读徽标:离开监控中心后有新触发,菜单显示未读数;进入页面后清零
🤖 AI 策略生成(可选)
- 自然语言 → 策略代码:用一句话描述策略思路,LLM 读取
docs/strategy-guide.md生成完整 Polars 策略文件 - 沙箱约束:生成代码经
ast校验、限定import polars as pl,避免逐行循环,优先向量化表达 - 可插拔:留空 AI 配置即跳过整个模块,不影响核心功能
🧰 数据与扩展
- 多源数据:日 K / 分钟 K / 指数 / 财务(利润 / 资产负债 / 现金流)/ 自选行情
- 🔌 第三方数据接入(重点) —— 内置数据源之外的数据也能用:
- 支持 Tushare 等第三方数据源,通过 HTTP 定时拉取自动入库
- 支持 CSV / Excel 上传 · JSON 写入,自动 schema 发现与符号归一
- 页面可视化配置扩展数据表,无需改代码
- 可接入你自己的量化项目数据,统一并入 DuckDB 查询面,与内置数据同台分析
- 盘后定时管道:APScheduler 15:30 CST 自动拉日 K + 重算 enriched 表 + 跑监控
- 令牌桶限流:适配各档位 rpm / batch 上限,批量合并 + 增量拉取,同一份数据多面板复用
🚀 快速开始
本项目仅通过 Docker 部署,无论是本地体验还是服务器部署都使用同一套镜像。
前置依赖
- Docker
- Docker Compose(已随 Docker Desktop 自带,Linux 需单独安装)
启动
cp .env.example .env # 按需填写 Key(留空即 Free 模式,可直接体验)
docker compose up --build
# 打开 http://localhost:3018
运行测试
# 运行后端全部测试(含回测引擎)
docker compose run --rm test
测试镜像已包含回测依赖,可直接运行
backend/tests下的全部 pytest 用例。
🧭 第一次使用
- 打开面板 → 设置 → 凭据与能力 → 点 重新检测,确认 Tier Label
- 点 立即跑盘后管道 —— 拉日 K + 计算 enriched 表
- Free 用户:只同步内置 DEMO_SYMBOLS(浦发 / 招商 / 茅台等 10 只)
- Starter+:同步全 A 或可获取的 instruments 列表
- 自选页:添加跟踪标的;点代码进 K 线页看蜡烛图 + 买卖点
- 选股页:点任一内置策略卡片即时扫描;或用自定义信号组合条件
- 回测页:选策略 / 信号 + 时间区间 → 跑回测 → 看净值 / 夏普 / 交易明细(SSE 实时进度)
- 监控中心页:配置监控规则(策略/个股信号/价格/市场异动),盘中 SSE 实时弹窗通知 + 持久化触发记录;或在个股详情页点「加监控」快速添加
⚙️ 配置
所有配置通过项目根目录的 .env 文件读取(复制 .env.example 开始)。配置也可在面板 设置 页面内修改。
数据源
当前默认接入内置数据源提供的订阅制 A 股数据。留空 TICKFLOW_API_KEY 即启用 Free 模式,无需注册即可体验。
TICKFLOW_API_KEY= # 留空 = Free 模式;填入 Key = 按订阅档位解锁
系统启动时会自动探测你的真实能力集,UI 显示「≈ Pro」等友好标签。
AI(可选):策略生成
AI 模块用于「自然语言生成策略代码」。所有配置留空即跳过 AI 功能,不影响核心使用。支持任何 OpenAI 兼容接口:
AI_PROVIDER=openai_compat # openai_compat | ollama
AI_BASE_URL=https://api.deepseek.com/v1
AI_API_KEY= # 留空 = 关闭 AI
AI_MODEL=deepseek-chat
AI_DAILY_TOKEN_BUDGET=500000 # 每日 token 预算上限
切换
AI_PROVIDER=ollama时无需AI_API_KEY,适合本地部署大模型。
服务与数据
HOST=0.0.0.0 # 监听地址
PORT=3018 # 服务端口
LOG_LEVEL=INFO # DEBUG | INFO | WARNING | ERROR
DATA_DIR=./data # Parquet / DuckDB 数据存储目录
🏗️ 技术栈
| 层 | 选型 |
|---|---|
| 后端 | FastAPI · Pydantic v2 · APScheduler · sse-starlette |
| 数据 | Polars(计算)· DuckDB(查询)· Parquet(存储)· PyArrow |
| 回测 | vectorbt(全项目唯一 pandas 边界) |
| 数据源 | A 股数据源 SDK(tickflow[all]) |
| AI(可选) | OpenAI 兼容接口(DeepSeek / 通义 / Ollama 等) |
| 前端 | React 18 · Vite · TypeScript · Tailwind CSS · Framer Motion · Tanstack Query · Lightweight Charts · ECharts · dnd-kit |
| 部署 | Docker 两阶段构建,前端 dist 拷进后端镜像,单容器 |
🗺️ 路线图
| Phase | 内容 | 状态 |
|---|---|---|
| 0 | 仓库骨架 / FastAPI 壳 / Vite + React SPA / Docker 一键起 | ✅ |
| 1 | 能力探测 + Kline 同步 + K 线分析页 | ✅ |
| 2 | Polars enriched 流水线 + Screener + 信号扫描 | ✅ |
| 3 | vectorbt 回测 + T+1 + 手续费 + 止损 + max-hold | ✅ |
| 4 | 监控引擎 + 告警规则 + Webhook + APScheduler 盘后定时 | ✅ |
| 5 | 统一监控中心 + 四类监控规则 + 实时推送 + 持久化触发记录 + 声效通知 | ✅ |
| v2 | Webhook 推送(QMT/掘金下单) · 板块异动 · 早晚报 · 更多扩展 | 🚧 |
📚 文档
- docs/strategy-guide.md —— 策略开发指南(AI 生成器与手写策略的规范)
- docs/ —— 策略构建步骤、示例
🤝 贡献
欢迎 Issue 和 PR。请通过 Docker 进行本地验证:
# 启动应用
docker compose up --build -d
# 运行测试
docker compose run --rm test
新增内置策略:在 backend/app/strategy/builtin/ 参照现有策略文件,实现 StrategyDef 即可被引擎自动发现。
⚠️ 免责声明
本项目仅供学习与量化研究,不构成任何投资建议。回测结果不代表未来收益。A 股有风险,入市需谨慎。数据准确性以数据源官方为准。
📄 License
MIT © stock-panel contributors
社区
本开源项目已链接并认可 LINUX DO 社区。





