自托管、零运维的 A 股「选股 + 监控 + 回测」量化工作台

基于 TickFlow 数据 · 🚀 开箱即用(单容器 / Free 模式) 能力驱动,适配 Free → Expert 全档位订阅 · 🔌 自由接入第三方扩展数据(例如 Tushare、自有量化项目数据)

核心功能 · 快速开始 · 配置 · 路线图

⚠️说明:目前项目基于TickFlow数据源。无需付费即可使用策略+回测等功能.自有个性化数据源可接入扩展数据使用。

如果觉得有用,请Star支持一下,蟹蟹🌹


🎯 项目定位

让任何个人散户 / 量化爱好者,零运维地拥有���套与自己订阅档位严格匹配的 A 股分析、选股、监控工作台。 基于 TickFlow Key 低成本获取数据。填写邀请码 V3KDKGXPEA 免费领取概念行业等扩展数据
任意接入第三方数据(Tushare 等),页面可视化自定义配置扩展数据表。

项目所需配置:

配置项 说明 是否必填
TickFlow API Key 数据源凭证,留空启用 None 模式,获取免费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:

  • 三种回测模式:个股 · 策略组合 · 自由信号组合
  • 真实约束: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 配置即跳过整个模块,不影响核心功能

🧰 数据与扩展

  • 多源数据:TickFlow 日 K / 分钟 K / 指数 / 财务(利润 / 资产负债 / 现金流)/ 自选行情
  • 🔌 第三方数据接入(重点) —— TickFlow 之外的数据也能用:
    • 支持 Tushare 等第三方数据源,通过 HTTP 定时拉取自动入库
    • 支持 CSV / Excel 上传 · JSON 写入,自动 schema 发现与符号归一
    • 页面可视化配置扩展数据表,无需改代码
    • 可接入你自己的量化项目数据,统一并入 DuckDB 查询面,与内置数据同台分析
  • 盘后定时管道:APScheduler 15:30 CST 自动拉日 K + 重算 enriched 表 + 跑监控
  • 令牌桶限流:适配各档位 rpm / batch 上限,批量合并 + 增量拉取,同一份数据多面板复用

🚀 快速开始

前置依赖

工具 版本 安装
Python ≥ 3.11 python.org
Node ≥ 20 nodejs.org
uv latest curl -LsSf https://astral.sh/uv/install.sh | sh
pnpm 9 npm i -g pnpmcorepack enable && corepack prepare pnpm@9 --activate

方式 A:Dev 模式(二次开发,最推荐)

cp .env.example .env       # 填 TICKFLOW_API_KEY,留空则启用 Free 试用

一键启动(推荐,自动检查\下载依赖 / 释放端口 / 同时起前后端,Ctrl-C 一并关闭):

平台 命令
macOS / Linux ./dev.sh
Windows (PowerShell) .\dev.ps1

方式 B:Docker(最省心,可部署)

cp .env.example .env       # 按需填写 Key(留空即 Free 模式,可直接体验)
docker compose up --build
# 打开 http://localhost:3018

首次运行会自动安装前后端依赖(约 1-2 分钟),之后直接启动:

自定义端口:BACKEND_PORT=8000 FRONTEND_PORT=5173 ./dev.sh(Windows:.\dev.ps1 -BackendPort 8000 -FrontendPort 5173)

手动分别启动(备选)
# 终端 1:后端
cd backend
uv sync
uv run uvicorn app.main:app --reload --port 3018

# 终端 2:前端
cd frontend
pnpm install
pnpm dev                   # http://localhost:3011

启用回测:cd backend && uv sync --extra backtest vectorbt → numba 体积较大,故作为可选 extras。macOS / Intel 无预构建 wheel 时需 brew install cmake 现场编译。


🧭 第一次使用

  1. 打开面板 → 设置 → 凭据与能力 → 点 重新检测,确认 Tier Label
  2. 立即跑盘后管道 —— 拉日 K + 计算 enriched 表
    • Free 用户:只同步内置 DEMO_SYMBOLS(浦发 / 招商 / 茅台等 10 只)
    • Starter+:同步全 A 或可获取的 instruments 列表
  3. 自选页:添加跟踪标的;点代码进 K 线页看蜡烛图 + 买卖点
  4. 选股页:点任一内置策略卡片即时扫描;或用自定义信号组合条件
  5. 回测页:选策略 / 信号 + 时间区间 → 跑回测 → 看净值 / 夏普 / 交易明细(SSE 实时进度)
  6. 监控中心页:配置监控规则(策略/个股信号/价格/市场异动),盘中 SSE 实时弹窗通知 + 持久化触发记录;或在个股详情页点「加监控」快速添加

⚙️ 配置

所有配置通过项目根目录的 .env 文件读取(复制 .env.example 开始)。配置也可在面板 设置 页面内修改。

数据源:TickFlow

TickFlow 提供订阅制 A 股数据。留空 TICKFLOW_API_KEY 即启用 Free 模式,无需注册即可体验

TICKFLOW_API_KEY=              # 留空 = Free 模式;填入 Key = 按订阅档位解锁

完整能力矩阵见 tickflow.org/pricing。系统启动时会自动探测你的真实能力集,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 边界)
数据源 TickFlow 官方 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/掘金下单) · 板块异动 · 早晚报 · 更多扩展 🚧

📚 文档


🤝 贡献

欢迎 Issue 和 PR。本地开发:

cd backend && uv sync --extra backtest   # 含回测依赖
cd ../frontend && pnpm install && pnpm dev

新增内置策略:在 backend/app/strategy/builtin/ 参照现有策略文件,实现 StrategyDef 即可被引擎自动发现。


⚠️ 免责声明

本项目仅供学习与量化研究,不构成任何投资建议。回测结果不代表未来收益。A 股有风险,入市需谨慎。数据准确性以数据源 TickFlow 官方为准。


📄 License

MIT © tickflow-stock-panel contributors

本项目依赖 TickFlow 提供数据服务,使用前请遵守其服务条款。

社区

本开源项目已链接并认可 LINUX DO 社区