shy3130 b79fe60a56 ci(docker): 优化镜像构建工作流 + 清理未启用的版本自增脚本
#22 (Docker 镜像构建工作流) 基础上的三点优化:

1. CI 关闭国内镜像源(USE_CN_MIRROR=0): GitHub runner 在海外,
   让构建直连官方 npm/PyPI 反而更快更稳; 本地/国内手动 docker build
   仍走 Dockerfile 默认的 CN 镜像。
2. 新增 .dockerignore: 排除 .git/data/node_modules/docs/screenshots 等
   非构建必需文件, 减小上下文体积、加速传输。
3. 叠加 tag 触发 + build-push-action v5→v6: 打 v* tag 时额外产出
   带版本号镜像(如 :v0.1.62), 便于固定回溯。

清理:
- 删除 scripts/bump_version.py (prepare-commit-msg hook 从未实际安装,
  属于死代码; 发版版本号改为手动维护, 与方案 B 一致)。
- 同步修正 backend/app/api/data.py 中对该脚本的过时引用注释。
2026-06-28 16:18:46 +08:00
2026-06-26 11:06:59 +08:00
2026-06-27 23:23:34 +08:00
2026-06-25 00:28:56 +08:00

📈 A股智能量化工作台

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

面向个人散户与量化爱好者而生

License: MIT Python React Data: TickFlow Deploy: Docker GitHub stars

  • 🆓 开箱即用 — 留空 Key 即进 None 模式,历史日 K 免费体验,无需付费
  • 🏠 自托管零运维 — Docker 单容器部署,数据完全掌握在自己手里
  • 🔍 三位一体 — 选股(20 内置策略)+ 实时监控 + 向量化回测,Polars 毫秒级扫描全 A 股
  • 🤖 AI 加持 — 一句话生成策略代码,任意 OpenAI 兼容接口均可接入(留空即关闭)
  • 🔌 自由扩展 — 接入 Tushare(开发中) / 自有量化项目数据,与内置数据同台分析
  • 🇨🇳 A 股专用 — 连板梯队、涨停动量、内置ths 概念 / 行业

基于 TickFlow 数据源。明确不做:不对标同花顺 / 通达信,不内置「AI 荐股 / 涨停预测」。

觉得有用可以点个 Star,蟹蟹 🌹


🎯 项目定位

面向个人散户与量化爱好者的 A 股分析工作台,聚焦「选股 + 监控 + 回测」三大场景,LLM能力驱动进行市场分析,掌控市场节奏;让普通投资者也能拥有一套可自定义策略的量化工具。


📸 界面预览

看板 Dashboard 策略 Screener
看板页面 策略页
回测 Backtest 监控中心 Monitor
回测页 监控中心
连板梯队 Limit Ladder 概念分析 Concept
连板梯队页 概念分析

🚀 快速开始

前置依赖

工具 版本 安装
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 pnpm

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

cp .env.example .env       # 按需填 TICKFLOW_API_KEY(留空 = None 模式)
./dev.sh                   # Windows: .\dev.ps1

自动检查 / 下载依赖、释放端口、同时起前后端,Ctrl-C 一并关闭。默认:

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

cp .env.example .env
docker compose up --build
# 打开 http://localhost:3018
环境适配与高级选项(老 CPU · 手动启动 · 回测依赖)

老 CPU 兼容(avx2/fma 缺失报错或 exit 132):在 .env 打开 BACKEND_EXTRAS=legacy-cpu 后重建,会给 Polars 切到 rtcompat 运行时;需回测则 BACKEND_EXTRAS=legacy-cpu backtest

手动分别启动:

# 后端
cd backend && uv sync --extra backtest   # 含回测依赖
uv run uvicorn app.main:app --reload --port 3018

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

回测依赖:vectorbt → numba 体积较大,作为可选 extras(uv sync --extra backtest)。macOS / Intel 无预构建 wheel 时需 brew install cmake 现场编译。

🔄 更新代码(已部署用户必读)

拉取新版本只需一条命令:

git pull

整个 data/ 目录都不纳入 git——行情 K线、财务、自选、回测、监控记录,乃至概念/行业扩展数据,全部是程序运行时生成/拉取的用户数据,git pull 物理上无法影响它们。新用户首次启动时,概念/行业两份扩展数据会自动从远程接口拉取,无需任何手动操作。

⚠️ 切勿使用以下命令"解决冲突"或"清理",它们会一次性删光 data/ 下所有未被 git 跟踪的数据:

  • git clean -fdx(最危险,会删掉所有 .gitignore 忽略的文件)
  • git reset --hard
  • 直接删除整个项目文件夹重新 git clone

git pull 报冲突,通常是本地误改了被跟踪的文件,请先 git stash 暂存再 pull,或单独联系作者,不要直接执行上面的命令。

🧭 跑起来后的第一次使用

  1. 设置 → 凭据与能力 → 点 重新检测,确认档位标签
  2. 设置立即跑盘后管道:拉日 K + 计算 enriched 表(None / Free 走 free-api,当日数据盘后 1-2 小时可用)
  3. 自选页加标的 → 选股页点策略卡片扫描 / 配自定义信号
  4. 回测页选策略 + 区间 → 看净值 / 夏普 / 交易明细(SSE 实时进度)
  5. 监控中心配规则(策略 / 个股信号 / 价格 / 异动),盘中实时弹窗 + 持久化记录

核心功能

🔍 选股引擎(Screener)

20 个内置策略,每个策略一个独立 Python 文件,基于 Polars 表达式向量化实现(backend/app/strategy/builtin/):

类型 代表策略
趋势 / 形态 趋势突破 · 均线多头 · MA 金叉 · MACD 金叉放量 · 布林突破
量价 / 涨停 量价齐升 · 高换手强势 · 连板股 · 断板反包 · 涨停动量
反转 / 波动 超跌反弹 · 超卖反转 · 新低反转 · 低波动龙头 · 回踩 MA20

扩展策略的三种方式:

方式 说明
🎛️ 自定义信号 不写代码,UI 上 字段 + 操作符 + 阈值 组合编译成 Polars 表达式热加载
🤖 AI 生成 一句话描述思路,LLM 读 strategy-guide.md 生成完整策略文件(经 ast 校验)→ 落入 data/strategies/ai/
📝 代码迁移 参照开发指南把已有策略改写为 Polars 文件放入 data/strategies/custom/,引擎自动发现

📊 指标流水线(Indicators)

原生 Polars 向量化,全 A 股一次扫表落盘 enriched Parquet:

  • 均线 / 趋势:MA(5-60)· EMA · MACD · 动量 · 布林带
  • 震荡 / 波动:RSI · KDJ · ATR · 年化波动率 · 振幅
  • 量能 / 涨跌停:量比 · 量均线 · 涨停信号 · 连板数
  • 原子信号:MA / MACD 金叉死叉 · N 日新高新低 · 布林突破
  • 复权:基于除权因子自动前复权,回测与指标口径一致

🧪 回测引擎(Backtest)

基于 vectorbt:三种模式(个股 / 策略组合 / 自由信号组合),真实约束(T+1 · 手续费 · 滑点 · 止损 · 最大持仓天数),组合管理(最大持仓 · 敞口 · 等权 / 自定义仓位)。SSE 流式进度支持切页重连,输出净值曲线 · 夏普 · 最大回撤 · 胜率 · 交易明细。

📡 监控中心(Monitor)

统一规则引擎,一个页面管理四类监控(策略 · 个股信号 · 价格涨跌 · 全市场异动):

  • 多条件 AND/OR + 冷却期去重 + 严重级别(info/warn/critical)
  • 多入口配置:监控中心新建 / 个股详情页「加监控」/ 策略卡片一键开启
  • 命中后右下角弹窗(可配声效)+ 持久化到 alerts.jsonl,菜单未读徽标

📈 个股分析(Beta)

以「行情 + 关键价位」为主体的单标的决策页:

  • 专用日 K 图表:主图 + 成交量 + 滑块,默认近 6 个月
  • 9 类关键价位(纯函数实时计算,毫秒级):压力支撑 · 成交密集区 · 枢轴点 · 前高前低 · Keltner 通道 · ATR 止损 · 缺口位 · 斐波那契 · 整数关口
  • AI 四维分析:技术 / 基本面 / 财务 / 消息面流式生成,实战派交易员视角

🧰 数据与扩展

  • TickFlow 多源数据:日 K / 分钟 K / 指数 / 财务 / 实时行情
  • 🔌 第三方接入(重点):Tushare 等 HTTP 定时拉取 · CSV / Excel 上传 · JSON 写入,自动 schema 发现 + 符号归一,页面可视化配置,可与自有量化项目数据并入 DuckDB 同台分析
  • 盘后定时管道:APScheduler 15:30 CST 自动拉日 K + 重算 enriched + 跑监控
  • 令牌桶限流:适配各档位 rpm / batch,批量合并 + 增量拉取

⚙️ 配置

所有配置从根目录 .env 读取(复制 .env.example 开始),也可在面板 设置 页修改。

数据源:TickFlow

TICKFLOW_API_KEY=              # 留空 = None 模式(历史日K免费);填 Key = 按订阅档位解锁

留空即 None 模式,通过 free-api 使用历史日 K(当日数据盘后 1-2 小时可用);免费注册 Key 后进 Free 模式,开启自选股实时监控。实时行情按档位:

档位 实时能力
Free 自选页前 5 个标的实时监控(最低 6 秒刷新)
Starter+ 全市场实时行情
Pro 分钟 K + 盘口
Expert WebSocket + 财务数据

完整能力矩阵见 tickflow.org/pricing,高等档位含较低档全部权益。

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 预算上限

服务与数据

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(存储)
回测 vectorbt(全项目唯一 pandas 边界)
数据源 TickFlow 官方 SDK 、其他数据源后续迭代实装
AI(可选) OpenAI 兼容接口(DeepSeek / 通义 / Ollama 等)
前端 React 18 · Vite · TypeScript · Tailwind · Tanstack Query · Lightweight Charts · ECharts · dnd-kit
部署 Docker 两阶段构建,前端 dist 拷进后端镜像,单容器

🗺️ 路线图

Phase 内容 状态
0-1 仓库骨架 · FastAPI 壳 · 能力探测 · K 线同步与分析页
2-3 Polars enriched 流水线 · Screener · vectorbt 回测(T+1/手续费/止损)
4-5 监控引擎 · 四类监控规则 · 实时 SSE 推送 · 持久化记录
6 个股分析(专用日 K + 9 类关键价位 + AI 四维分析)
v2 Webhook 推送(QMT/掘金下单)· 板块异动 · 早晚报 · 更多扩展 🚧

📚 文档与贡献

欢迎 Issue 和 PR。新增内置策略:在 backend/app/strategy/builtin/ 参照现有文件实现 StrategyDef,引擎自动发现。


⚠️ 免责声明

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

📄 License

MIT © tickflow-stock-panel contributors · 本项目依赖 TickFlow 提供数据服务,使用前请遵守其服务条款。

社区

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

S
Description
mirror of github.com/aeroxw/tick-stock-panel (via ghfast.top)
Readme MIT
25 MiB
Languages
Python 60.5%
TypeScript 38.7%
Inno Setup 0.3%
PowerShell 0.2%
JavaScript 0.1%