release: v1.23.1 — 行情终端 WebUI 重大升级

This commit is contained in:
GitHub
2026-09-01 17:45:12 +08:00
parent 33d44ba5d6
commit a79861af76
3 changed files with 40 additions and 3 deletions
+27
View File
@@ -2,6 +2,33 @@
本文件记录 easy-tdx 的版本变更。格式遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/)。
## [1.23.1] — 2026-09-01
**行情终端 Web UI 重大升级**——Web UI 从「回测工作台」升级为「行情终端 + 回测工作台」双模块。展示层设计对标 tick-stock-panel 等专业看盘终端(暗色主题、红涨绿跌、高信息密度侧边栏布局),数据全部来自通达信协议直连,零新增后端依赖(SSE 用标准 StreamingResponse 手写,未引 sse-starlette)。
### 新增:行情终端
- **市场看板(`/`)**——五大指数实时行情条(内嵌当日迷你分时 + 成交额,SSE 推送)、全市场涨跌统计(涨/跌/平/停 + 涨停跌停家数堆叠条)、**四维情绪雷达**(赚钱效应/量能/动量/趋势,附综合分与判词)、**全市场涨跌分布直方图**(DESC+ASC 各拉 3000 去重合并约 5500 只、22 桶、鼠标跟随浮窗显示区间家数与占比)、**涨停雷达**(≥9.8% 名单)、行业/概念板块热冷双榜(一次拉 120 个板块切两端,可点击下钻)、**四联排行榜**(涨幅/跌幅/成交额/换手 tab 切换)、两市异动雷达(60 类异动事件流)。所有榜单/板块行点击直达个股或板块弹窗。
- **自选行情(`/watchlist`)**——输入 6 位代码一键加自选(市场按代码段自动识别 + MAC symbol-info 自动取中文名,历史无名称记录自动补全),全表 SSE 实时刷新,行内 SVG 迷你分时(60 秒重拉),点击行打开详情弹窗。
- **个股详情弹窗**——五档盘口(量条 + 按昨收着色)+ 分时图(渐变面积/均价线/昨收基准/红绿量柱,支持 **1/3/5 日多日分时**,历史日走 `/minute/history`)+ 日 K(**技术指标可切换**:主图 MA/BOLL/EMA,副图 MACD/KDJ/RSI,前端本地计算与 MyTT 同口径)+ 一键加/移除自选 + **一键寻优**(跳转参数寻优页自动跑全策略预设网格)。
- **板块详情弹窗**——行业/概念板块的分时/日 K(含指标)+ 成分股涨跌榜(升降序切换,点击叠开个股弹窗),支持板块加自选。
- **实时推送架构**——后端 `QuoteStreamer` 单条共享轮询循环 fan-out 到所有 SSE 连接(每连接独立队列 + 背压丢旧、无人订阅自动休眠、盘中 8 秒/盘外 60 秒自动降频、自选增删下周期自动纳入);前端 pinia 全局单连接 + 指数退避重连,侧边栏底部实时连接徽标。
- **自选持久化**——`~/.easy_tdx/watchlist.db`SQLite`(market, code)` 唯一幂等,分组字段预留)。
### 修复
- **大盘指数与板块指数报价缩小 10 倍**(解码层)——`_price_decimal_digits` 曾把 SH `000` 系列(上证指数/沪深300/科创50 等)与 `881`/`885` 板块指数按 3 位小数(厘)解析,而这些指数的协议原始单位是「分」(实测 2026-09-01:科创50 1647.53 显示成 164.753、沪深300 4611.44 显示成 461.144、种植业板块 1039.93 显示成 103.993)。现统一改为 2 位;`880` 统计指数保持 3 位(market_stat 家数还原依赖该语义)。ETF/基金/债券 3 位(Issue #8)不受影响。CLI `quote`、REST、SSE 三出口同时修正。
- 批量五档 REST 路径笔误(前端 `/security/quotes``/quotes`SPA fallback 吞掉 404 导致自选添加与部分弹窗失败)。
- SSE 五档字段名白名单笔误(`bid1_vol``bid_vol1`,导致推送缺失盘口)。
- MAC 排行榜列名适配(价格列为 `close``change_pct`,前端归一化计算涨跌幅 + market 数字码转字符串)。
- 日 K tab 切换不撑满(`v-show` 零宽容器初始化 ECharts → 改 `v-if`);分布图浮窗超出卡片上界(改鼠标跟随 + 边界钳制)。
- 寻优「查看」等四处跳转指向旧 `/` 路由(路由改造后 `/` 已是看板)→ 改 `/backtest`
- FastAPI 0.141+ `_IncludedRouter` 导致 `app.routes` 不再平铺子路由,两个既有测试改用 OpenAPI schema 验证。
### 测试
- 新增 `tests/unit/test_watchlist_and_streamer.py`(7 例:自选 CRUD/幂等/排序、streamer fan-out/白名单/背压丢旧/交易时段判定)与 `tests/unit/test_quote_decimal_digits.py`(20 组参数化用例锁定指数/ETF/股票/统计指数/跨市场同码不同义的小数位语义);更新 Issue #8 时代两处用构造数据自证的旧断言为真实值口径。全套 1078 个单测通过。
## [1.21.0] — 2026-08-31
**扩展日线(vipdoc/ds `*.day`)解析槽位错误**Issue #57,含破坏性 API 变更)——`read_ex_daily_bars` 把第 7 槽(成交量)同时赋给 `amount``vol``amount=vol`),真正的成交额藏在第 6 槽 float32 重解释值里、以误导性字段名 `hk_stock_amount` 暴露。实测铁证:扩展市场 `47#IF300`(沪深3002023-09-11 第 6 槽 float32 = 186,871,758,848、第 7 槽 uint32 = 105,358,016,与标准市场 `sh000300.day` 同日 amount(元)/ vol(手)**完全一致**,证明第 6 槽是 float32 成交额、第 7 槽是 uint32 成交量。`_EX_DAILY_FMT` 旧声明 `<IffffIIf` 还使写端把成交额按 uint32 编码——真实成交额动辄超 42.9 亿上限(如上述 1868 亿),`struct.pack('I')` 必然溢出报错。
+12 -2
View File
@@ -19,6 +19,8 @@ easy-tdx 要做的事很简单:**把机构的数据锁砸开,扔到每个普
**缠论分析**(笔、中枢、买卖点、背驰)一键出结果——你不再需要手画分型、猜线段。
**内置回测引擎**——写个策略文件,一行命令跑回测,18 个经典策略自带,多因子组合、策略选股扫描,批量对比哪个最赚钱一目了然。
**行情终端 Web UI**v1.23 重大升级)——`easy-tdx serve` 一条命令,浏览器秒变专业看盘终端:**市场看板**(五大指数实时推送 + 迷你分时、涨跌统计、四维情绪雷达、全市场涨跌分布直方图、涨停雷达、行业/概念热冷榜、涨幅/跌幅/成交额/换手四联排行榜、两市异动雷达)、**自选行情**(输入 6 位代码即加,全表 SSE 实时刷新、行内迷你分时)、**个股详情弹窗**(五档盘口 + 1/3/5 日分时 + 带 MA/BOLL/MACD/KDJ/RSI 指标切换的日 K,一键加自选、一键全策略寻优)、**板块下钻**(行业/概念弹窗看板块走势 + 成分股涨跌榜直达个股)。实时推送采用 SSE 单循环轮询 fan-out 架构(盘中 8 秒一拍,无人订阅自动休眠),自选持久化 SQLite。展示层设计对标专业终端(暗色、红涨绿跌、高信息密度),数据全部来自通达信协议直连——不花一分钱。
**回测可视化 Web UI**v1.17 新增)——Vue3 + ECharts 单页应用,浏览器里选标的、挑策略、调参数,K 线买卖点、净值回撤、19 项绩效指标一目了然。支持组合回测、参数网格寻优、多策略结果对比,**还能把好策略存进策略库(SQLite 持久化),勾选多个策略做资金分仓组合回测看综合表现**,全程零代码。
**数据评级系统**(v1.17.14 新增)——回测结果顶部直接显示 **S/A/B/C/D 五档评级徽章**,1 秒判断「这个品种适不适合经常参与」。评级**不看收益率**(避免被近期大涨误导),只看风险调整后的持有体验:卡玛比率、最大回撤、胜率、利润因子、夏普、波动率六维加权 + 一票否决(系统亏损/深回撤/低胜率直接低评)。京东方那种「收益 126% 但胜率 35%、回撤 41%」的案例会评 **D 档**——明确告诉普通人「别碰,套牢后回本极难」。三个入口(单标的/组合/寻优)都有评级,长线低频策略不会被冤枉(交易少时只降权胜率维度,不否决整个评级)。
@@ -442,7 +444,7 @@ easy-tdx portfolio --stocks SZ:000001,SH:600519 \
| `--allocation` | 资金分配方式(目前支持 `equal` 均等分配) |
| `--chanlun-level` | 自动计算缠论分析并注入策略(如 DAILY/30MIN |
**回测可视化 Web UIv1.17 新增):**
**行情终端 + 回测可视化 Web UIv1.17 新增v1.23 升级为行情终端):**
<img src="./docs/web-ui-page-1.png" alt="Web UI 截图 1" />
@@ -450,7 +452,15 @@ easy-tdx portfolio --stocks SZ:000001,SH:600519 \
<img src="./docs/web-ui-page-3.png" alt="Web UI 截图 3" />
不想写命令行?用浏览器。`easy-tdx serve` 一条命令启动,浏览器自动打开 `http://localhost:8000`,就是完整的回测可视化界面
不想写命令行?用浏览器。`easy-tdx serve` 一条命令启动,浏览器自动打开 `http://localhost:8000`
Web UI 包含两大模块:
- **行情终端(v1.23 新增)**——侧边栏专业终端布局:
- **市场看板**:五大指数实时行情(SSE 推送)、全市场涨跌统计(涨/跌/平/涨停/跌停 + 堆叠条)、行业/概念板块热度榜、涨幅榜/跌幅榜、两市异动雷达(加速拉升/封涨停板/大单托盘等),点击个股打开五档盘口 + 分时/日K 对话框;
- **自选行情**:输入 6 位代码一键加自选(SQLite 持久化),全表实时刷新(SSE),行内迷你分时图,点击行看个股详情;
- **实时推送架构**:后端单条轮询循环 fan-out 到所有 SSE 连接(交易时段 ~8s 一拍,盘外降频 60s,无人订阅自动休眠),前端指数退避重连。
- **回测工作台(v1.17 起)**——浏览器里选标的、挑策略、调参数,K 线买卖点、净值回撤、19 项绩效指标一目了然。支持组合回测、参数网格寻优、多策略结果对比,还能把好策略存进策略库(SQLite 持久化),勾选多个策略做资金分仓组合回测看综合表现,全程零代码。
**前置条件:**
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "easy-tdx"
version = "1.21.0"
version = "1.23.1"
description = "通达信 TCP 协议行情数据客户端,支持在线行情、离线数据读取与写入同步"
readme = "README.md"
requires-python = ">=3.10"