From e21d2f69ee9564b3b569c911ddb4d19404b0d533 Mon Sep 17 00:00:00 2001 From: fish Date: Tue, 7 Jul 2026 21:13:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A1=B9=E7=9B=AE=E8=AF=B4?= =?UTF-8?q?=E6=98=8E=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 50 ++++++- local/README.md | 208 +++++++++++++++------------ serve/README.md | 366 ++++++++++++++++++------------------------------ 3 files changed, 298 insertions(+), 326 deletions(-) diff --git a/README.md b/README.md index 52da238..65219fa 100644 --- a/README.md +++ b/README.md @@ -1 +1,49 @@ -# README \ No newline at end of file +# A股智能量化工作台 + +本项目是一个面向个人散户与量化爱好者的 **A 股「选股 + 监控 + 回测」量化工作台**,采用前后端分离架构,支持 Docker 一键部署。 + +## 目录结构 + +``` +stock/ +├── local/ # 本地完整版(满血功能) +└── serve/ # 服务端轻量版(备份 + 基础查看) +``` + +### local/ — 本地完整版 + +自托管的满血工作站,所有功能本地运行: + +- **选股**:20+ 内置策略,支持自定义信号与 AI 生成策略 +- **回测**:基于 vectorbt 的向量化回测,支持 T+1、手续费、止损等真实约束 +- **实时监控**:策略 / 个股信号 / 价格 / 异动四类规则,SSE 实时告警 + 飞书推送 +- **个股分析**:日 K 图表、9 类关键价位、AI 四维分析 +- **数据扩展**:TickFlow 多源数据 + 第三方 HTTP / CSV / Excel 接入 + +详细说明与部署指南见 [`local/README.md`](./local/README.md)。 + +### serve/ — 服务端轻量版 + +`local/` 的云端伴侣,用于**数据备份**与**远程基础查看**: + +- 接收 `local/` 推送的选股结果、复盘报告、历史 K 线等基础数据 +- 支持多用户(admin / viewer)角色隔离 +- 不包含回测、实时监控、实时行情等需要本地运行的能力 + +详细说明与部署指南见 [`serve/README.md`](./serve/README.md)。 + +## 快速选择 + +| 场景 | 使用目录 | +| :--- | :--- | +| 在自己的电脑 / 服务器上跑完整功能 | [`local/`](./local/README.md) | +| 只需要远程备份和查看基础数据 | [`serve/`](./serve/README.md) | +| 既要本地分析,又要远程查看 | 同时部署 `local/` + `serve/`,并通过 `SYNC_SERVE_URL` 同步 | + +## 数据安全提示 + +两个目录下的 `data/` 文件夹均为运行时生成的用户数据,**不纳入 git 管理**。更新代码时 `git pull` 不会影响已有数据,但请勿使用 `git clean -fdx` 或 `git reset --hard`,以免误删数据。 + +## 开源协议 + +[MIT](./LICENSE) diff --git a/local/README.md b/local/README.md index 35ec5a0..adde58b 100644 --- a/local/README.md +++ b/local/README.md @@ -1,10 +1,10 @@
-# 📈 A股智能量化工作台 +# 📈 A股智能量化工作台(本地完整版) -**自托管、零运维的 A 股「选股 + 监控 + 回测」量化工作台** +**自托管、满血功能的 A 股「选股 + 监控 + 回测」量化工作台** -**面向个人散户与量化爱好者而生** +**面向个人散户与量化爱好者,所有功能本地运行** [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE) [![Python](https://img.shields.io/badge/Python-≥3.11-blue.svg)](https://www.python.org/) @@ -17,26 +17,23 @@
-**[快速开始](#-快速开始)** · **[核心功能](#-核心功能)** · **[配置](#️-配置)** · **[路线图](#-路线图)** +**[快速开始](#-快速开始)** · **[核心功能](#-核心功能)** · **[配置](#️-配置)** · **[同步到服务端](#-同步到服务端)**
-- 🆓 **开箱即用** — 留空 Key 即进 None 模式,历史日 K 免费体验,**无需付费** -- 🏠 **自托管零运维** — Docker 单容器部署,数据完全掌握在自己手里 -- 🔍 **三位一体** — 选股(20 内置策略)+ 实时监控 + 向量化回测,Polars 毫秒级扫描全 A 股 -- 🤖 **AI 加持** — 一句话生成策略代码,任意 OpenAI 兼容接口均可接入(留空即关闭) -- 🔌 **自由扩展** — 自有量化项目数据,与内置数据同台分析 -- 🇨🇳 **A 股专用** — 盘后自动AI复盘并推送至飞书等;连板梯队、涨停动量、内置ths 概念 / 行业 +- 🆓 **开箱即用** — 留空 Key 即进 None 模式,历史日 K 免费体验,**无需付费** +- 🏠 **自托管零运维** — Docker 单容器部署,数据完全掌握在自己手里 +- 🔍 **三位一体** — 选股(20 内置策略)+ 实时监控 + 向量化回测,Polars 毫秒级扫描全 A 股 +- 🤖 **AI 加持** — 一句话生成策略代码,任意 OpenAI 兼容接口均可接入(留空即关闭) +- 📡 **实时行情与监控** — 自选股实时行情、五档盘口、监控规则命中后 SSE 弹窗 + 飞书推送 +- 🔌 **自由扩展** — 自有量化项目数据,与内置数据同台分析 +- 🇨🇳 **A 股专用** — 盘后自动 AI 复盘并推送至飞书等;连板梯队、涨停动量、内置 ths 概念 / 行业 +基于 [TickFlow](https://tickflow.org/auth/register?ref=V3KDKGXPEA) 数据源。**明确不做**:不对标同花顺 / 通达信,不内置「AI 荐股 / 涨停预测」。 - - 基于 [TickFlow](https://tickflow.org/auth/register?ref=V3KDKGXPEA) 数据源。**明确不做**:不对标同花顺 / 通达信,不内置「AI 荐股 / 涨停预测」。 - -> ⚠️ 考虑到tickflow数据源没有人气/资金流向等个性化数据,我将开放自有的第三方数据以供大佬们研究使用,包括但不限于当前内置的ths概念/ths行业(后续更新在这里) - - -> 有更多稳定免费数据源推荐,或者提交建议/意见的大佬可以邮件到 415333856@qq.com,q群 109338242 - +> ⚠️ 考虑到 tickflow 数据源没有人气/资金流向等个性化数据,我将开放自有的第三方数据以供大佬们研究使用,包括但不限于当前内置的 ths 概念/ths 行业(后续更新在这里) +> +> 有更多稳定免费数据源推荐,或者提交建议/意见的大佬可以邮件到 415333856@qq.com,q群 109338242 觉得有用可以点个 Star,蟹蟹 🌹 @@ -44,7 +41,9 @@ ## 🎯 项目定位 -**面向个人散户与量化爱好者的 A 股分析工作台**,聚焦「**选股 + 监控 + 回测**」三大场景,LLM能力驱动进行市场分析,掌控市场节奏;让普通投资者也能拥有一套可自定义策略的量化工具。 +`local/` 目录下的版本是**本地完整版**,面向希望在自己的电脑或局域网中运行全部功能的用户。 + +它包含完整的选股、回测、实时监控、个股分析、财务分析、连板梯队、概念/行业分析等全部能力,是项目功能的「满血」形态。同时支持把数据同步到远程 `serve/` 服务端,作为云端备份和基础数据查看入口。 --- @@ -96,19 +95,19 @@ | [`uv`](https://docs.astral.sh/uv/) | latest | `curl -LsSf https://astral.sh/uv/install.sh \| sh` | | `pnpm` | 9 | `npm i -g pnpm` | -### 方式 A:Dev 模式(二次开发推荐) +### 方式 A:Dev 模式(二次开发推荐) ```bash -cp .env.example .env # 按需填 TICKFLOW_API_KEY(留空 = None 模式) +cp .env.example .env # 按需填 TICKFLOW_API_KEY(留空 = None 模式) ./dev.sh # Windows: .\dev.ps1 ``` -自动检查 / 下载依赖、释放端口、同时起前后端,Ctrl-C 一并关闭。默认: +自动检查 / 下载依赖、释放端口、同时起前后端,Ctrl-C 一并关闭。默认: - 后端 → · 前端 → -- 自定义端口:`BACKEND_PORT=8000 FRONTEND_PORT=5173 ./dev.sh` +- 自定义端口:`BACKEND_PORT=8000 FRONTEND_PORT=5173 ./dev.sh` -### 方式 B:Docker(部署最省心) +### 方式 B:Docker(部署最省心) ```bash cp .env.example .env @@ -116,12 +115,14 @@ docker compose up --build # 打开 http://localhost:3018 ``` +容器名:`TickFlow_Local`。默认端口 `3018`,数据持久化到 `./data/`。 +
-环境适配与高级选项(老 CPU · 手动启动 · 回测依赖) +环境适配与高级选项(老 CPU · 手动启动 · 回测依赖) -**老 CPU 兼容(avx2/fma 缺失报错或 exit 132)**:桌面客户端安装包已内置兼容内核(新老 CPU 通吃)。Docker / 源码用户在 `.env` 打开 `BACKEND_EXTRAS=legacy-cpu` 后重建,会给 Polars 切到 `rtcompat` 运行时;需回测则 `BACKEND_EXTRAS=legacy-cpu backtest`。 +**老 CPU 兼容(avx2/fma 缺失报错或 exit 132)**:桌面客户端安装包已内置兼容内核(新老 CPU 通吃)。Docker / 源码用户在 `.env` 打开 `BACKEND_EXTRAS=legacy-cpu` 后重建,会给 Polars 切到 `rtcompat` 运行时;需回测则 `BACKEND_EXTRAS=legacy-cpu backtest`。 -**手动分别启动:** +**手动分别启动:** ```bash # 后端 @@ -132,42 +133,42 @@ 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` 现场编译。 +**回测依赖**:vectorbt → numba 体积较大,作为可选 extras(`uv sync --extra backtest`)。macOS / Intel 无预构建 wheel 时需 `brew install cmake` 现场编译。
-### 🔄 更新代码(已部署用户必读) +### 🔄 更新代码(已部署用户必读) -拉取新版本只需一条命令: +拉取新版本只需一条命令: ```bash git pull ``` -**整个 `data/` 目录都不纳入 git**——行情 K线、财务、自选、回测、监控记录,乃至概念/行业扩展数据,全部是程序运行时生成/拉取的用户数据,`git pull` 物理上无法影响它们。新用户首次启动时,概念/行业两份扩展数据会自动从远程接口拉取,无需任何手动操作。 +**整个 `data/` 目录都不纳入 git**——行情 K线、财务、自选、回测、监控记录,乃至概念/行业扩展数据,全部是程序运行时生成/拉取的用户数据,`git pull` 物理上无法影响它们。新用户首次启动时,概念/行业两份扩展数据会自动从远程接口拉取,无需任何手动操作。 -> ⚠️ **切勿使用以下命令"解决冲突"或"清理",它们会一次性删光 `data/` 下所有未被 git 跟踪的数据:** -> - `git clean -fdx`(最危险,会删掉所有 `.gitignore` 忽略的文件) +> ⚠️ **切勿使用以下命令"解决冲突"或"清理",它们会一次性删光 `data/` 下所有未被 git 跟踪的数据:** +> - `git clean -fdx`(最危险,会删掉所有 `.gitignore` 忽略的文件) > - `git reset --hard` > - 直接删除整个项目文件夹重新 `git clone` > -> 若 `git pull` 报冲突,通常是本地误改了被跟踪的文件,请先 `git stash` 暂存再 pull,或单独联系作者,不要直接执行上面的命令。 +> 若 `git pull` 报冲突,通常是本地误改了被跟踪的文件,请先 `git stash` 暂存再 pull,或单独联系作者,不要直接执行上面的命令。 ### 🧭 跑起来后的第一次使用 -1. **设置 → 凭据与能力** → 点 **重新检测**,确认档位标签 -2. **设置** → **立即跑盘后管道**:拉日 K + 计算 enriched 表(None / Free 走 free-api,当日数据盘后 1-2 小时可用) +1. **设置 → 凭据与能力** → 点 **重新检测**,确认档位标签 +2. **设置** → **立即跑盘后管道**:拉日 K + 计算 enriched 表(None / Free 走 free-api,当日数据盘后 1-2 小时可用) 3. **自选**页加标的 → **选股**页点策略卡片扫描 / 配自定义信号 -4. **回测**页选策略 + 区间 → 看净值 / 夏普 / 交易明细(SSE 实时进度) -5. **监控中心**配规则(策略 / 个股信号 / 价格 / 异动),盘中实时弹窗 + 持久化记录 +4. **回测**页选策略 + 区间 → 看净值 / 夏普 / 交易明细(SSE 实时进度) +5. **监控中心**配规则(策略 / 个股信号 / 价格 / 异动),盘中实时弹窗 + 持久化记录 --- ## ✨ 核心功能 -### 🔍 选股引擎(Screener) +### 🔍 选股引擎(Screener) -**20 个内置策略**,每个策略一个独立 Python 文件,基于 Polars 表达式向量化实现(`backend/app/strategy/builtin/`): +**20 个内置策略**,每个策略一个独立 Python 文件,基于 Polars 表达式向量化实现(`backend/app/strategy/builtin/`): | 类型 | 代表策略 | | :---------- | :------------------------------------------------------- | @@ -175,79 +176,81 @@ git pull | 量价 / 涨停 | 量价齐升 · 高换手强势 · 连板股 · 断板反包 · 涨停动量 | | 反转 / 波动 | 超跌反弹 · 超卖反转 · 新低反转 · 低波动龙头 · 回踩 MA20 | -**扩展策略的三种方式:** +**扩展策略的三种方式:** | 方式 | 说明 | | :---------------- | :---------------------------------------------------------------------------------------------------- | -| **🎛️ 自定义信号** | 不写代码,UI 上 `字段 + 操作符 + 阈值` 组合编译成 Polars 表达式热加载 | -| **🤖 AI 生成** | 一句话描述思路,LLM 读 `strategy-guide.md` 生成完整策略文件(经 `ast` 校验)→ 落入 `data/strategies/ai/` | -| **📝 代码迁移** | 参照开发指南把已有策略改写为 Polars 文件放入 `data/strategies/custom/`,引擎自动发现 | +| **🎛️ 自定义信号** | 不写代码,UI 上 `字段 + 操作符 + 阈值` 组合编译成 Polars 表达式热加载 | +| **🤖 AI 生成** | 一句话描述思路,LLM 读 `strategy-guide.md` 生成完整策略文件(经 `ast` 校验)→ 落入 `data/strategies/ai/` | +| **📝 代码迁移** | 参照开发指南把已有策略改写为 Polars 文件放入 `data/strategies/custom/`,引擎自动发现 | -### 📊 指标流水线(Indicators) +### 📊 指标流水线(Indicators) -原生 Polars 向量化,全 A 股一次扫表落盘 enriched Parquet: +原生 Polars 向量化,全 A 股一次扫表落盘 enriched Parquet: -- **均线 / 趋势**:MA(5-60)· EMA · MACD · 动量 · 布林带 -- **震荡 / 波动**:RSI · KDJ · ATR · 年化波动率 · 振幅 -- **量能 / 涨跌停**:量比 · 量均线 · 涨停信号 · 连板数 -- **原子信号**:MA / MACD 金叉死叉 · N 日新高新低 · 布林突破 -- **复权**:基于除权因子自动前复权,回测与指标口径一致 +- **均线 / 趋势**:MA(5-60)· EMA · MACD · 动量 · 布林带 +- **震荡 / 波动**:RSI · KDJ · ATR · 年化波动率 · 振幅 +- **量能 / 涨跌停**:量比 · 量均线 · 涨停信号 · 连板数 +- **原子信号**:MA / MACD 金叉死叉 · N 日新高新低 · 布林突破 +- **复权**:基于除权因子自动前复权,回测与指标口径一致 -### 🧪 回测引擎(Backtest) +### 🧪 回测引擎(Backtest) -基于 vectorbt:**三种模式**(个股 / 策略组合 / 自由信号组合),真实约束(T+1 · 手续费 · 滑点 · 止损 · 最大持仓天数),组合管理(最大持仓 · 敞口 · 等权 / 自定义仓位)。SSE 流式进度支持切页重连,输出净值曲线 · 夏普 · 最大回撤 · 胜率 · 交易明细。 +基于 vectorbt:**三种模式**(个股 / 策略组合 / 自由信号组合),真实约束(T+1 · 手续费 · 滑点 · 止损 · 最大持仓天数),组合管理(最大持仓 · 敞口 · 等权 / 自定义仓位)。SSE 流式进度支持切页重连,输出净值曲线 · 夏普 · 最大回撤 · 胜率 · 交易明细。 -### 📡 监控中心(Monitor) +### 📡 监控中心(Monitor) -统一规则引擎,一个页面管理**四类监控**(策略 · 个股信号 · 价格涨跌 · 全市场异动): +统一规则引擎,一个页面管理**四类监控**(策略 · 个股信号 · 价格涨跌 · 全市场异动): -- 多条件 AND/OR + 冷却期去重 + 严重级别(info/warn/critical) -- 多入口配置:监控中心新建 / 个股详情页「加监控」/ 策略卡片一键开启 -- 命中后右下角弹窗(可配声效)+ 持久化到 `alerts.jsonl`,菜单未读徽标 -- **触发记录详情**:每条记录展示命中的具体条件(如 `RSI>80`)与当前价位,一眼看清为何触发 -- **飞书 Webhook 推送**:全局一处配置飞书群机器人地址,启用推送的规则命中即推送到飞书群(支持签名校验);可在设置页设「默认推送渠道」,新建规则自动预填 +- 多条件 AND/OR + 冷却期去重 + 严重级别(info/warn/critical) +- 多入口配置:监控中心新建 / 个股详情页「加监控」/ 策略卡片一键开启 +- 命中后右下角弹窗(可配声效)+ 持久化到 `alerts.jsonl`,菜单未读徽标 +- **触发记录详情**:每条记录展示命中的具体条件(如 `RSI>80`)与当前价位,一眼看清为何触发 +- **飞书 Webhook 推送**:全局一处配置飞书群机器人地址,启用推送的规则命中即推送到飞书群(支持签名校验);可在设置页设「默认推送渠道」,新建规则自动预填 +- **SSE 实时推送**:本地运行时,命中告警通过 Server-Sent Events 实时推送到前端 -### 📈 个股分析(Beta) +### 📈 个股分析(Beta) -以「行情 + 关键价位」为主体的单标的决策页: +以「行情 + 关键价位」为主体的单标的决策页: -- **专用日 K 图表**:主图 + 成交量 + 滑块,默认近 6 个月 -- **9 类关键价位**(纯函数实时计算,毫秒级):压力支撑 · 成交密集区 · 枢轴点 · 前高前低 · Keltner 通道 · ATR 止损 · 缺口位 · 斐波那契 · 整数关口 -- **AI 四维分析**:技术 / 基本面 / 财务 / 消息面流式生成,实战派交易员视角 +- **专用日 K 图表**:主图 + 成交量 + 滑块,默认近 6 个月 +- **9 类关键价位**(纯函数实时计算,毫秒级):压力支撑 · 成交密集区 · 枢轴点 · 前高前低 · Keltner 通道 · ATR 止损 · 缺口位 · 斐波那契 · 整数关口 +- **AI 四维分析**:技术 / 基本面 / 财务 / 消息面流式生成,实战派交易员视角 ### 🧰 数据与扩展 -- **TickFlow 多源数据**:日 K / 分钟 K / 指数 / 财务 / 实时行情 -- **🔌 第三方接入(重点)**:Tushare 等 HTTP 定时拉取 · CSV / Excel 上传 · JSON 写入,自动 schema 发现 + 符号归一,页面可视化配置,**可与自有量化项目数据并入 DuckDB 同台分析** -- **盘后定时管道**:APScheduler 15:30 CST 自动拉日 K + 重算 enriched + 跑监控 -- **令牌桶限流**:适配各档位 rpm / batch,批量合并 + 增量拉取 +- **TickFlow 多源数据**:日 K / 分钟 K / 指数 / 财务 / 实时行情 +- **🔌 第三方接入(重点)**:Tushare 等 HTTP 定时拉取 · CSV / Excel 上传 · JSON 写入,自动 schema 发现 + 符号归一,页面可视化配置,**可与自有量化项目数据并入 DuckDB 同台分析** +- **盘后定时管道**:APScheduler 15:30 CST 自动拉日 K + 重算 enriched + 跑监控 +- **令牌桶限流**:适配各档位 rpm / batch,批量合并 + 增量拉取 --- ## ⚙️ 配置 -所有配置从根目录 `.env` 读取(复制 `.env.example` 开始),也可在面板 **设置** 页修改。 +所有配置从根目录 `.env` 读取(复制 `.env.example` 开始),也可在面板 **设置** 页修改。 -### 数据源:TickFlow +### 数据源:TickFlow ```ini -TICKFLOW_API_KEY= # 留空 = None 模式(历史日K免费);填 Key = 按订阅档位解锁 +TICKFLOW_API_KEY= # 留空 = None 模式(历史日K免费);填 Key = 按订阅档位解锁 ``` -留空即 None 模式,通过 free-api 使用历史日 K(当日数据盘后 1-2 小时可用);免费注册 Key 后进 Free 模式,开启自选股实时监控。**实时行情按档位**: +留空即 None 模式,通过 free-api 使用历史日 K(当日数据盘后 1-2 小时可用);免费注册 Key 后进 Free 模式,开启自选股实时监控。**实时行情按档位**: | 档位 | 实时能力 | | :------- | :--------------------------------------- | -| Free | 自选页前 5 个标的实时监控(最低 6 秒刷新) | +| None | 无实时行情,仅历史日 K | +| Free | 自选页前 5 个标的实时监控(最低 6 秒刷新) | | Starter+ | 全市场实时行情 | | Pro | 分钟 K + 盘口 | | Expert | WebSocket + 财务数据 | -> 完整能力矩阵见 [tickflow.org/pricing](https://tickflow.org/pricing/),高等档位含较低档全部权益。 +> 完整能力矩阵见 [tickflow.org/pricing](https://tickflow.org/pricing/),高等档位含较低档全部权益。 -### AI(可选) +### AI(可选) -用于自然语言生成策略。**所有配置留空即跳过**,不影响核心功能。支持任意 OpenAI 兼容接口: +用于自然语言生成策略。**所有配置留空即跳过**,不影响核心功能。支持任意 OpenAI 兼容接口: ```ini AI_PROVIDER=openai_compat # openai_compat | ollama @@ -268,15 +271,33 @@ DATA_DIR=./data # Parquet / DuckDB 数据存储目录 ### 访问密码 -面板首次设置访问密码时,出于安全考虑**仅允许本机或内网访问**(防公网陌生人抢先设置锁死面板)。公网服务器部署有两种方式设首个密码: +面板首次设置访问密码时,出于安全考虑**仅允许本机或内网访问**(防公网陌生人抢先设置锁死面板)。公网服务器部署有两种方式设首个密码: -1. **环境变量预置(推荐)** — 在 `.env` 填入 `AUTH_PASSWORD`,首次启动自动初始化(哈希后写入 `auth.json`,之后不再读取): +1. **环境变量预置(推荐)** — 在 `.env` 填入 `AUTH_PASSWORD`,首次启动自动初始化(哈希后写入 `auth.json`,之后不再读取): ```ini - AUTH_PASSWORD=你的密码 # 至少 6 位;仅首次生效,已设过则不覆盖 + AUTH_PASSWORD=你的密码 # 至少 6 位;仅首次生效,已设过则不覆盖 ``` -2. **SSH 端口转发** — 本机执行 `ssh -L 3018:127.0.0.1:3018 用户@服务器IP`,浏览器开 `http://127.0.0.1:3018` 设密码 +2. **SSH 端口转发** — 本机执行 `ssh -L 3018:127.0.0.1:3018 用户@服务器IP`,浏览器开 `http://127.0.0.1:3018` 设密码 -> 详细步骤与重置密码见 [docs/deploy-password.md](./docs/deploy-password.md)。设完密码后改密码走页面 UI(`设置 → 修改密码`)。 +> 详细步骤与重置密码见 [docs/deploy-password.md](./docs/deploy-password.md)。设完密码后改密码走页面 UI(`设置 → 修改密码`)。 + +--- + +## 🔄 同步到服务端 + +本地完整版支持把核心数据同步到远程 `serve/` 服务端,作为: + +- **异地备份**:防止本地磁盘损坏导致历史数据丢失 +- **远程查看**:在手机或其他设备上通过浏览器查看基础行情与选股结果 + +配置方式: + +```ini +SYNC_SERVE_URL=https://your-serve.example.com +SYNC_KEY=your-shared-secret +``` + +> 同步是**单向**的:本地 → 服务端。服务端只接收并展示基础数据,不包含本地版的实时行情、回测、监控等复杂能力。详细说明见 `../serve/README.md`。 --- @@ -285,12 +306,13 @@ DATA_DIR=./data # Parquet / DuckDB 数据存储目录 | 层 | 选型 | | :----------- | :------------------------------------------------------------------------------------------------ | | **后端** | FastAPI · Pydantic v2 · APScheduler · sse-starlette | -| **数据** | Polars(计算)· DuckDB(查询)· Parquet(存储) | -| **回测** | vectorbt(全项目唯一 pandas 边界) | -| **数据源** | [TickFlow](https://tickflow.org/auth/register?ref=V3KDKGXPEA) 官方 SDK 、其他数据源后续迭代实装 | -| **AI**(可选) | OpenAI 兼容接口(DeepSeek / 通义 / Ollama 等) | +| **数据** | Polars(计算)· DuckDB(查询)· Parquet(存储) | +| **回测** | vectorbt(全项目唯一 pandas 边界) | +| **数据源** | [TickFlow](https://tickflow.org/auth/register?ref=V3KDKGXPEA) 官方 SDK | +| **AI**(可选) | OpenAI 兼容接口(DeepSeek / 通义 / Ollama 等) | | **前端** | React 18 · Vite · TypeScript · Tailwind · Tanstack Query · Lightweight Charts · ECharts · dnd-kit | -| **部署** | Docker 两阶段构建,前端 dist 拷进后端镜像,**单容器** | +| **部署** | Docker 两阶段构建,前端 dist 拷进后端镜像,**单容器** | +| **桌面端** | PyInstaller + Inno Setup(Windows 安装包) | --- @@ -301,27 +323,27 @@ DATA_DIR=./data # Parquet / DuckDB 数据存储目录 | 0-1 | 仓库骨架 · FastAPI 壳 · 能力探测 · K 线同步与分析页 | ✅ | | 2-3 | Polars enriched 流水线 · Screener · vectorbt 回测(T+1/手续费/止损) | ✅ | | 4-5 | 监控引擎 · 四类监控规则 · 实时 SSE 推送 · 持久化记录 | ✅ | -| 6 | 个股分析(专用日 K + 9 类关键价位 + AI 四维分析) | ✅ | -| **v2** | Webhook 推送(QMT/掘金下单)· 板块异动 · 早晚报 · 更多扩展 | 🚧 | +| 6 | 个股分析(专用日 K + 9 类关键价位 + AI 四维分析) | ✅ | +| **v2** | Webhook 推送(QMT/掘金下单)· 板块异动 · 早晚报 · 更多扩展 | 🚧 | --- ## 📚 文档与贡献 -- [docs/strategy-guide.md](./docs/strategy-guide.md) —— 策略开发指南(AI 生成与手写规范) +- [docs/strategy-guide.md](./docs/strategy-guide.md) —— 策略开发指南(AI 生成与手写规范) - [docs/](./docs) —— 策略构建步骤、示例 -欢迎 Issue 和 PR。新增内置策略:在 `backend/app/strategy/builtin/` 参照现有文件实现 `StrategyDef`,引擎自动发现。 +欢迎 Issue 和 PR。新增内置策略:在 `backend/app/strategy/builtin/` 参照现有文件实现 `StrategyDef`,引擎自动发现。 --- ## ⚠️ 免责声明 -本项目仅供**学习与量化研究**,**不构成任何投资建议**。回测结果不代表未来收益。A 股有风险,入市需谨慎。数据准确性以数据源 TickFlow 官方为准。 +本项目仅供**学习与量化研究**,**不构成任何投资建议**。回测结果不代表未来收益。A 股有风险,入市需谨慎。数据准确性以数据源 TickFlow 官方为准。 ## 📄 License -[MIT](./LICENSE) © tickflow-stock-panel contributors · 本项目依赖 [TickFlow](https://tickflow.org/auth/register?ref=V3KDKGXPEA) 提供数据服务,使用前请遵守其服务条款。 +[MIT](./LICENSE) © tickflow-stock-panel contributors · 本项目依赖 [TickFlow](https://tickflow.org/auth/register?ref=V3KDKGXPEA) 提供数据服务,使用前请遵守其服务条款。 ## 社区 diff --git a/serve/README.md b/serve/README.md index 35ec5a0..1e266c7 100644 --- a/serve/README.md +++ b/serve/README.md @@ -1,94 +1,44 @@
-# 📈 A股智能量化工作台 +# 📈 A股智能量化工作台(服务端备份/查看版) -**自托管、零运维的 A 股「选股 + 监控 + 回测」量化工作台** +**本地完整版的云端伴侣:数据备份 + 基础数据查看** -**面向个人散户与量化爱好者而生** +**面向已部署 `local/` 完整版的用户,提供远程备份与轻量查看能力** [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE) [![Python](https://img.shields.io/badge/Python-≥3.11-blue.svg)](https://www.python.org/) [![React](https://img.shields.io/badge/React-18-61dafb.svg)](https://react.dev/) -[![Data: TickFlow](https://img.shields.io/badge/Data-TickFlow-00b386.svg)](https://tickflow.org/auth/register?ref=V3KDKGXPEA) [![Deploy: Docker](https://img.shields.io/badge/Deploy-Docker-2496ed.svg)](./Dockerfile) -[![GitHub stars](https://img.shields.io/github/stars/shy3130/tickflow-stock-panel?style=social)](https://github.com/shy3130/tickflow-stock-panel/stargazers)
-**[快速开始](#-快速开始)** · **[核心功能](#-核心功能)** · **[配置](#️-配置)** · **[路线图](#-路线图)** +**[快速开始](#-快速开始)** · **[功能范围](#-功能范围)** · **[接收本地同步](#-接收本地同步)** · **[部署说明](#-部署说明)**
-- 🆓 **开箱即用** — 留空 Key 即进 None 模式,历史日 K 免费体验,**无需付费** -- 🏠 **自托管零运维** — Docker 单容器部署,数据完全掌握在自己手里 -- 🔍 **三位一体** — 选股(20 内置策略)+ 实时监控 + 向量化回测,Polars 毫秒级扫描全 A 股 -- 🤖 **AI 加持** — 一句话生成策略代码,任意 OpenAI 兼容接口均可接入(留空即关闭) -- 🔌 **自由扩展** — 自有量化项目数据,与内置数据同台分析 -- 🇨🇳 **A 股专用** — 盘后自动AI复盘并推送至飞书等;连板梯队、涨停动量、内置ths 概念 / 行业 - - - - 基于 [TickFlow](https://tickflow.org/auth/register?ref=V3KDKGXPEA) 数据源。**明确不做**:不对标同花顺 / 通达信,不内置「AI 荐股 / 涨停预测」。 - -> ⚠️ 考虑到tickflow数据源没有人气/资金流向等个性化数据,我将开放自有的第三方数据以供大佬们研究使用,包括但不限于当前内置的ths概念/ths行业(后续更新在这里) - - -> 有更多稳定免费数据源推荐,或者提交建议/意见的大佬可以邮件到 415333856@qq.com,q群 109338242 - - -觉得有用可以点个 Star,蟹蟹 🌹 - --- ## 🎯 项目定位 -**面向个人散户与量化爱好者的 A 股分析工作台**,聚焦「**选股 + 监控 + 回测**」三大场景,LLM能力驱动进行市场分析,掌控市场节奏;让普通投资者也能拥有一套可自定义策略的量化工具。 +`serve/` 目录下的版本是 **服务端轻量版**,它不是 `local/` 的替代品,而是其**配套服务端**: + +- **数据备份**:接收本地完整版推送的核心数据,防止本地磁盘故障导致历史数据丢失 +- **远程查看**:在手机、平板或其他设备上通过浏览器查看基础行情、选股结果、复盘报告等 +- **多用户隔离**:支持 admin / viewer 角色,适合家庭或小团队共享查看 + +**它不是满血版**,不包含实时行情、回测、实时监控、五档盘口、AI 策略生成等需要本地运行或消耗大量计算/Quota 的能力。所有复杂分析和决策功能,请在 `local/` 本地完整版中使用。 --- -## 📸 界面预览 - - - - - - - - - - - - - - - - - - - - - - - - - - -
看板 Dashboard策略 Screener
看板页面策略页
回测 Backtest监控中心 Monitor
回测页监控中心
连板梯队 Limit Ladder概念分析 Concept
连板梯队页概念分析
- -
- -### 📸 [查看更多界面截图 »](./screenshots/README.md) - -
- ---- - -## 🚀 快速开始 +## ⚡ 快速开始 ### 前置依赖 +与 `local/` 相同: + | 工具 | 版本 | 安装 | | :--------------------------------- | :----- | :------------------------------------------------- | | Python | ≥ 3.11 | [python.org](https://www.python.org/) | @@ -96,19 +46,19 @@ | [`uv`](https://docs.astral.sh/uv/) | latest | `curl -LsSf https://astral.sh/uv/install.sh \| sh` | | `pnpm` | 9 | `npm i -g pnpm` | -### 方式 A:Dev 模式(二次开发推荐) +### 方式 A:Dev 模式 ```bash -cp .env.example .env # 按需填 TICKFLOW_API_KEY(留空 = None 模式) +cp .env.example .env # 配置监听端口、同步密钥等 ./dev.sh # Windows: .\dev.ps1 ``` -自动检查 / 下载依赖、释放端口、同时起前后端,Ctrl-C 一并关闭。默认: +默认: - 后端 → · 前端 → -- 自定义端口:`BACKEND_PORT=8000 FRONTEND_PORT=5173 ./dev.sh` +- 自定义端口:`BACKEND_PORT=8000 FRONTEND_PORT=5173 ./dev.sh` -### 方式 B:Docker(部署最省心) +### 方式 B:Docker(推荐) ```bash cp .env.example .env @@ -116,212 +66,164 @@ docker compose up --build # 打开 http://localhost:3018 ``` -
-环境适配与高级选项(老 CPU · 手动启动 · 回测依赖) +容器名:`stock_panel`。默认端口 `3018`。 -**老 CPU 兼容(avx2/fma 缺失报错或 exit 132)**:桌面客户端安装包已内置兼容内核(新老 CPU 通吃)。Docker / 源码用户在 `.env` 打开 `BACKEND_EXTRAS=legacy-cpu` 后重建,会给 Polars 切到 `rtcompat` 运行时;需回测则 `BACKEND_EXTRAS=legacy-cpu backtest`。 - -**手动分别启动:** - -```bash -# 后端 -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` 现场编译。 - -
- -### 🔄 更新代码(已部署用户必读) - -拉取新版本只需一条命令: - -```bash -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. **监控中心**配规则(策略 / 个股信号 / 价格 / 异动),盘中实时弹窗 + 持久化记录 +> 与 `local/` 不同,`serve/` 的 `data/` 目录**默认被 `.dockerignore` 忽略**,容器重启不会保留容器内的数据。请通过本地 `local/` 主动同步,或将 `data/` 挂载到持久化卷。 --- -## ✨ 核心功能 +## 📦 功能范围 -### 🔍 选股引擎(Screener) +| 功能 | serve/ 服务端 | 说明 | +| :--- | :---: | :--- | +| 看板 Dashboard | ✅ | 展示已同步的基础市场概况 | +| 选股结果查看 | ✅ | 查看 local/ 推送的选股结果 | +| 概念 / 行业分析 | ✅ | 查看已同步的概念/行业数据 | +| 复盘报告 | ✅ | 查看 local/ 生成的盘后 AI 复盘 | +| 指数 / 个股基础 K 线 | ✅ | 查看已同步的历史 K 线 | +| 多用户认证(admin/viewer) | ✅ | 支持多用户、角色隔离 | +| 数据同步接收 | ✅ | 接收 local/ 推送的数据 | +| 回测 | ❌ | 请在 local/ 中完成 | +| 实时监控 / SSE 告警 | ❌ | 请在 local/ 中使用 | +| 五档盘口 / 实时行情 | ❌ | 请在 local/ 中使用 | +| 自选实时监控 | ❌ | 请在 local/ 中使用 | +| AI 策略生成 | ❌ | 请在 local/ 中使用 | -**20 个内置策略**,每个策略一个独立 Python 文件,基于 Polars 表达式向量化实现(`backend/app/strategy/builtin/`): +### 适用场景 -| 类型 | 代表策略 | -| :---------- | :------------------------------------------------------- | -| 趋势 / 形态 | 趋势突破 · 均线多头 · MA 金叉 · MACD 金叉放量 · 布林突破 | -| 量价 / 涨停 | 量价齐升 · 高换手强势 · 连板股 · 断板反包 · 涨停动量 | -| 反转 / 波动 | 超跌反弹 · 超卖反转 · 新低反转 · 低波动龙头 · 回踩 MA20 | +- **异地灾备**:local/ 每天收盘后自动把 enriched 数据、选股结果、复盘报告推送到 serve/ +- **移动查看**:出差时用手机浏览器访问 serve/,查看本地已分析好的结果 +- **家庭共享**:家人用 viewer 账号查看,admin 账号管理同步密钥 -**扩展策略的三种方式:** +--- -| 方式 | 说明 | -| :---------------- | :---------------------------------------------------------------------------------------------------- | -| **🎛️ 自定义信号** | 不写代码,UI 上 `字段 + 操作符 + 阈值` 组合编译成 Polars 表达式热加载 | -| **🤖 AI 生成** | 一句话描述思路,LLM 读 `strategy-guide.md` 生成完整策略文件(经 `ast` 校验)→ 落入 `data/strategies/ai/` | -| **📝 代码迁移** | 参照开发指南把已有策略改写为 Polars 文件放入 `data/strategies/custom/`,引擎自动发现 | +## 🔄 接收本地同步 -### 📊 指标流水线(Indicators) +### 1. 服务端配置 -原生 Polars 向量化,全 A 股一次扫表落盘 enriched Parquet: +在 `serve/.env` 中设置同步密钥(与 local/ 保持一致): -- **均线 / 趋势**:MA(5-60)· EMA · MACD · 动量 · 布林带 -- **震荡 / 波动**:RSI · KDJ · ATR · 年化波动率 · 振幅 -- **量能 / 涨跌停**:量比 · 量均线 · 涨停信号 · 连板数 -- **原子信号**:MA / MACD 金叉死叉 · N 日新高新低 · 布林突破 -- **复权**:基于除权因子自动前复权,回测与指标口径一致 +```ini +SYNC_KEY=your-shared-secret +``` -### 🧪 回测引擎(Backtest) +首次启动时建议通过 `AUTH_PASSWORD` 预置管理员密码: -基于 vectorbt:**三种模式**(个股 / 策略组合 / 自由信号组合),真实约束(T+1 · 手续费 · 滑点 · 止损 · 最大持仓天数),组合管理(最大持仓 · 敞口 · 等权 / 自定义仓位)。SSE 流式进度支持切页重连,输出净值曲线 · 夏普 · 最大回撤 · 胜率 · 交易明细。 +```ini +AUTH_PASSWORD=你的密码 +``` -### 📡 监控中心(Monitor) +### 2. 本地端配置 -统一规则引擎,一个页面管理**四类监控**(策略 · 个股信号 · 价格涨跌 · 全市场异动): +在 `local/.env` 中填写服务端地址和密钥: -- 多条件 AND/OR + 冷却期去重 + 严重级别(info/warn/critical) -- 多入口配置:监控中心新建 / 个股详情页「加监控」/ 策略卡片一键开启 -- 命中后右下角弹窗(可配声效)+ 持久化到 `alerts.jsonl`,菜单未读徽标 -- **触发记录详情**:每条记录展示命中的具体条件(如 `RSI>80`)与当前价位,一眼看清为何触发 -- **飞书 Webhook 推送**:全局一处配置飞书群机器人地址,启用推送的规则命中即推送到飞书群(支持签名校验);可在设置页设「默认推送渠道」,新建规则自动预填 +```ini +SYNC_SERVE_URL=https://your-serve.example.com +SYNC_KEY=your-shared-secret +``` -### 📈 个股分析(Beta) +### 3. 触发同步 -以「行情 + 关键价位」为主体的单标的决策页: +在 local/ 的「设置 → 数据同步」页面手动触发,或等待盘后定时任务自动推送。 -- **专用日 K 图表**:主图 + 成交量 + 滑块,默认近 6 个月 -- **9 类关键价位**(纯函数实时计算,毫秒级):压力支撑 · 成交密集区 · 枢轴点 · 前高前低 · Keltner 通道 · ATR 止损 · 缺口位 · 斐波那契 · 整数关口 -- **AI 四维分析**:技术 / 基本面 / 财务 / 消息面流式生成,实战派交易员视角 +### 4. 安全建议 -### 🧰 数据与扩展 +- 务必通过 HTTPS 暴露 serve/ +- `SYNC_KEY` 应使用强随机字符串,并定期更换 +- 不要对外开放 22 / 数据库等无关端口 +- 若暴露在公网,务必先设置 `AUTH_PASSWORD` -- **TickFlow 多源数据**:日 K / 分钟 K / 指数 / 财务 / 实时行情 -- **🔌 第三方接入(重点)**:Tushare 等 HTTP 定时拉取 · CSV / Excel 上传 · JSON 写入,自动 schema 发现 + 符号归一,页面可视化配置,**可与自有量化项目数据并入 DuckDB 同台分析** -- **盘后定时管道**:APScheduler 15:30 CST 自动拉日 K + 重算 enriched + 跑监控 -- **令牌桶限流**:适配各档位 rpm / batch,批量合并 + 增量拉取 +--- + +## 🏗️ 部署说明 + +### 最小资源 + +| 资源 | 建议值 | +| :--- | :--- | +| CPU | 1 核 | +| 内存 | 512 MB | +| 磁盘 | 根据数据量,建议 ≥ 10 GB | + +### 持久化 + +serve/ 的数据主要来自 local/ 同步。如果你希望容器重启后保留数据,请在 `docker-compose.yml` 中挂载持久卷: + +```yaml +volumes: + - /your/host/data:/app/data +``` + +### 反向代理示例(Nginx) + +```nginx +server { + listen 443 ssl; + server_name your-serve.example.com; + + location / { + proxy_pass http://127.0.0.1:3018; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } +} +``` --- ## ⚙️ 配置 -所有配置从根目录 `.env` 读取(复制 `.env.example` 开始),也可在面板 **设置** 页修改。 - -### 数据源:TickFlow - ```ini -TICKFLOW_API_KEY= # 留空 = None 模式(历史日K免费);填 Key = 按订阅档位解锁 +# 同步密钥(必须和 local/.env 里的 SYNC_KEY 一致) +SYNC_KEY=your-shared-secret + +# 服务端口 +HOST=0.0.0.0 +PORT=3018 + +# 首次管理员密码(仅首次启动生效,写入 auth.json 后不再读取) +AUTH_PASSWORD=你的密码 + +# 日志级别 +LOG_LEVEL=INFO + +# 数据目录(Docker 中建议挂载到宿主机) +DATA_DIR=./data ``` -留空即 None 模式,通过 free-api 使用历史日 K(当日数据盘后 1-2 小时可用);免费注册 Key 后进 Free 模式,开启自选股实时监控。**实时行情按档位**: - -| 档位 | 实时能力 | -| :------- | :--------------------------------------- | -| Free | 自选页前 5 个标的实时监控(最低 6 秒刷新) | -| Starter+ | 全市场实时行情 | -| Pro | 分钟 K + 盘口 | -| Expert | WebSocket + 财务数据 | - -> 完整能力矩阵见 [tickflow.org/pricing](https://tickflow.org/pricing/),高等档位含较低档全部权益。 - -### AI(可选) - -用于自然语言生成策略。**所有配置留空即跳过**,不影响核心功能。支持任意 OpenAI 兼容接口: - -```ini -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 预算上限 -``` - -### 服务与数据 - -```ini -HOST=0.0.0.0 # 监听地址 -PORT=3018 # 服务端口 -LOG_LEVEL=INFO # DEBUG | INFO | WARNING | ERROR -DATA_DIR=./data # Parquet / DuckDB 数据存储目录 -``` - -### 访问密码 - -面板首次设置访问密码时,出于安全考虑**仅允许本机或内网访问**(防公网陌生人抢先设置锁死面板)。公网服务器部署有两种方式设首个密码: - -1. **环境变量预置(推荐)** — 在 `.env` 填入 `AUTH_PASSWORD`,首次启动自动初始化(哈希后写入 `auth.json`,之后不再读取): - ```ini - AUTH_PASSWORD=你的密码 # 至少 6 位;仅首次生效,已设过则不覆盖 - ``` -2. **SSH 端口转发** — 本机执行 `ssh -L 3018:127.0.0.1:3018 用户@服务器IP`,浏览器开 `http://127.0.0.1:3018` 设密码 - -> 详细步骤与重置密码见 [docs/deploy-password.md](./docs/deploy-password.md)。设完密码后改密码走页面 UI(`设置 → 修改密码`)。 +完整配置项参考 `serve/.env.example`。 --- -## 🏗️ 技术栈 +## 🗺️ 与 local/ 的关系 -| 层 | 选型 | -| :----------- | :------------------------------------------------------------------------------------------------ | -| **后端** | FastAPI · Pydantic v2 · APScheduler · sse-starlette | -| **数据** | Polars(计算)· DuckDB(查询)· Parquet(存储) | -| **回测** | vectorbt(全项目唯一 pandas 边界) | -| **数据源** | [TickFlow](https://tickflow.org/auth/register?ref=V3KDKGXPEA) 官方 SDK 、其他数据源后续迭代实装 | -| **AI**(可选) | OpenAI 兼容接口(DeepSeek / 通义 / Ollama 等) | -| **前端** | React 18 · Vite · TypeScript · Tailwind · Tanstack Query · Lightweight Charts · ECharts · dnd-kit | -| **部署** | Docker 两阶段构建,前端 dist 拷进后端镜像,**单容器** | +``` +┌─────────────────────────────────────┐ +│ local/ 本地完整版 │ +│ 选股 · 回测 · 实时监控 · AI 分析 │ +│ ↓ 定时/手动同步 │ +└─────────────────────────────────────┘ + │ + ▼ HTTPS + SYNC_KEY +┌─────────────────────────────────────┐ +│ serve/ 服务端轻量版 │ +│ 数据备份 · 基础查看 · 多用户 │ +└─────────────────────────────────────┘ +``` ---- - -## 🗺️ 路线图 - -| Phase | 内容 | 状态 | -| :----- | :----------------------------------------------------------------- | :--- | -| 0-1 | 仓库骨架 · FastAPI 壳 · 能力探测 · K 线同步与分析页 | ✅ | -| 2-3 | Polars enriched 流水线 · Screener · vectorbt 回测(T+1/手续费/止损) | ✅ | -| 4-5 | 监控引擎 · 四类监控规则 · 实时 SSE 推送 · 持久化记录 | ✅ | -| 6 | 个股分析(专用日 K + 9 类关键价位 + AI 四维分析) | ✅ | -| **v2** | Webhook 推送(QMT/掘金下单)· 板块异动 · 早晚报 · 更多扩展 | 🚧 | - ---- - -## 📚 文档与贡献 - -- [docs/strategy-guide.md](./docs/strategy-guide.md) —— 策略开发指南(AI 生成与手写规范) -- [docs/](./docs) —— 策略构建步骤、示例 - -欢迎 Issue 和 PR。新增内置策略:在 `backend/app/strategy/builtin/` 参照现有文件实现 `StrategyDef`,引擎自动发现。 +- **local/**:功能核心,承担所有计算、实时行情、回测、监控 +- **serve/**:数据落地与轻量展示,不承担计算,不直接调用 TickFlow 高配额接口 --- ## ⚠️ 免责声明 -本项目仅供**学习与量化研究**,**不构成任何投资建议**。回测结果不代表未来收益。A 股有风险,入市需谨慎。数据准确性以数据源 TickFlow 官方为准。 +本项目仅供**学习与量化研究**,**不构成任何投资建议**。数据准确性以数据源 TickFlow 官方及本地 `local/` 推送为准。A 股有风险,入市需谨慎。 ## 📄 License -[MIT](./LICENSE) © tickflow-stock-panel contributors · 本项目依赖 [TickFlow](https://tickflow.org/auth/register?ref=V3KDKGXPEA) 提供数据服务,使用前请遵守其服务条款。 +[MIT](./LICENSE) © tickflow-stock-panel contributors · 本项目依赖 [TickFlow](https://tickflow.org/auth/register?ref=V3KDKGXPEA) 提供数据服务,使用前请遵守其服务条款。 ## 社区