禄得-UI_UX原型设计
盘后分析页面原型设计文档
本文档使用 MrDoc 发布
-
+
首页
盘后分析页面原型设计文档
# 盘后分析页面原型设计文档 ## Abstract 本文档描述禄得 PC 端(lude-web-2)新增的"盘后分析"页面原型设计,位于 QMT 实盘模块左侧导航"账号管理"下方。页面数据全部来源于实盘端(qmt-extensions)盘后数据采集模块(analysis.py)写入的 SQLite 数据库,对应文档见 [盘后数据采集与分析模块 Wiki ID:286](https://mrdoc.lude.site/doc/286)。 --- ## 1. 页面定位与数据来源 ### 1.1 页面入口 QMT 实盘 → 左侧导航 → 账号管理下方 → **盘后分析** ### 1.2 数据来源 所有数据来自实盘端 `analysis.db`(SQLite),由 `analysis.py` 在每日盘后(`after_trade()` 回调)自动采集写入。 | SQLite 表 | QMT 采集对象 | 采集函数 | 页面使用模块 | |-----------|------------|---------|------------| | `account_daily` | Account | `fetch_accounts()` | 资产概览、收益概览、出入金推算 | | `position_daily` | Position | `fetch_positions()` | 持仓标的、策略收益、仓位占比 | | `deal_daily` | Deal | `fetch_deals()` | 成交记录、账户流水 | ### 1.3 三维度贯穿 - **多账号**:顶部"资金账号"切换,支持单账号查看与全部汇总。关联字段 `m_strAccountID` - **多资产**:按 `asset_type`(stock/bond/etf/repo)分类筛选与统计 - **多策略**:按 `m_strRemark`(deal_daily 中直接存储 strategy_id)拆分收益归因 --- ## 2. 基础设置面板 页面顶部统一设置区域,所有 Tab 共用。 | 设置项 | 类型 | 说明 | 数据字段 | |--------|------|------|---------| | 资金账号 | 下拉选择 | 全部账号(汇总)/ 各独立账号 | `account_daily.m_strAccountID` | | 基准指标 | 下拉选择 | 沪深300 / 中证500 / 中证1000 / 中证转债 | 外部行情数据 | | 收益时间 | 日期范围选择器 | 含快捷方式:全部/本月/本年/近1月/近3月/近6月/近1年 | `snapshot_date` 范围 | | 实盘策略(资产) | 下拉选择 | 全部资产 / 转债 / 股票 / 基金 | `asset_type` 筛选 | | 实盘策略(策略) | 下拉选择 | 全部策略 / 具体策略名 | `deal_daily.m_strRemark` 筛选 | | 回测策略 | 下拉选择 | 不选择 / 具体策略名 | 关联回测模块 | | 初始资金 | 数字输入 | 回测初始资金(万) | 回测参数 | | 手续费 | 数字输入 | 回测手续费(千分比) | 回测参数 | 按钮: - **开始分析**(蓝色):根据当前参数重新计算全部数据 - **删除重记**(红底白字):删除当日采集数据并重新采集,需二次确认弹窗 --- ## 3. Tab 页面结构 共 6 个 Tab:账号管理 → 收益分析 → 成交记录 → 已清仓标的 → 账户流水 → 出入金记录 --- ### 3.1 账号管理 #### 3.1.1 收益概览 | 展示项 | 计算公式 | 数据来源 | |--------|---------|---------| | 今日盈亏金额 | `m_dPositionProfit + m_dCloseProfit` | `account_daily` | | 今日涨跌幅 | `(m_dBalance - m_dPreBalance) / m_dPreBalance` | `account_daily` | | 基准今日涨跌幅 | 外部行情数据 | 基准指标设置 | #### 3.1.2 资产概览 | 展示项 | 数据字段 | 来源表 | |--------|---------|--------| | 总资产 | `m_dBalance` | `account_daily` | | 净资产 | `m_dAssureAsset` | `account_daily` | | 总市值 | `m_dInstrumentValue` | `account_daily` | | 转债市值 | `m_dLoanValue` | `account_daily` | | 股票市值 | `m_dStockValue` | `account_daily` | | 基金市值 | `m_dFundValue` | `account_daily` | | 总现金 | `m_dAvailable` | `account_daily` | | 可取资金 | `m_dFetchBalance` | `account_daily` | | 冻结资金 | `m_dFrozenCash` | `account_daily` | | 总逆回购 | `m_dRepurchaseValue` | `account_daily` | **仓位占比饼图**:各类市值 / `m_dBalance`,含图例(转债/股票/基金/现金/逆回购) #### 3.1.3 策略收益 按 `deal_daily.m_strRemark`(strategy_id)关联 `position_daily` 进行分组聚合。 | 列名 | 计算方式 | |------|---------| | 资产 | `asset_type` 归一化标签 | | 策略 | `m_strRemark`(strategy_id),颜色与资产类别一致 | | 单日涨跌幅 | `SUM(m_dFloatProfit) / (SUM(m_dMarketValue) - SUM(m_dFloatProfit))` | | 单日收益 | `SUM(m_dFloatProfit)` by strategy_id | | 累计涨跌幅 | 策略市值相对持仓成本的涨跌幅 | | 累计收益 | 策略市值 - 持仓成本 | | 策略市值 | `SUM(m_dMarketValue)` by strategy_id | | 持仓成本 | `SUM(m_nVolume * m_dOpenPrice)` by strategy_id | 支持:资产/策略下拉筛选 + 翻页(10条/页)+ 手动添加 + 编辑/删除操作 #### 3.1.4 持仓标的 来源:`position_daily`,策略通过 `deal_daily.m_strRemark` 关联 | 列名 | 数据字段 | 来源 | |------|---------|------| | 代码 | `m_strInstrumentIDExchangeID`(如 127045.SZ) | `position_daily` | | 名称 | `m_strInstrumentName` | `position_daily` | | 资产 | `asset_type` | 归一化字段 | | 策略 | `m_strRemark`(颜色与资产一致) | `deal_daily` 关联 | | 持仓量 | `m_nVolume` | `position_daily` | | 可用数量 | `m_nCanUseVolume` | `position_daily` | | 开仓价 | `m_dOpenPrice` | `position_daily` | | 均价 | `m_dAvgOpenPrice` | `position_daily` | | 现价 | `m_dLastPrice` | `position_daily` | | 市值 | `m_dMarketValue` | `position_daily` | | 持仓成本 | `m_dPositionCost` | `position_daily` | | 浮动盈亏 | `m_dFloatProfit` | `position_daily` | | 持仓盈亏 | `m_dPositionProfit` | `position_daily` | | 盈亏比例 | `m_dProfitRate` | `position_daily` | | 资产占比 | `m_dMarketValue / account_daily.m_dBalance` | 计算字段 | 支持:资产/策略下拉筛选 + 翻页(10条/页)+ 手动添加 + 编辑/删除操作 --- ### 3.2 收益分析 #### 3.2.1 账户涨跌幅收益曲线 三条收益曲线 + 回撤阴影: - **红色实线**:实盘累计收益 - **蓝色实线**:回测累计收益 - **黄色实线**:基准累计收益 - **红色阴影**:实盘最大回撤 - **蓝色阴影**:回测最大回撤 - **黄色阴影**:基准最大回撤 数据计算: - 实盘收益 = `account_daily.m_dBalance` 按 `snapshot_date` 逐日计算涨跌幅,从 0 起算 - 回测收益 = 根据选定回测策略+初始资金+手续费,调用回测引擎计算 - 基准收益 = 外部行情数据 曲线从 0 点起算,默认展示本年。左 Y 轴为收益率,右 Y 轴为最大回撤。 #### 3.2.2 盈亏统计 | 列名 | 说明 | |------|------| | 时间段 | 近一交易日/近一周/近一个月/近三个月/本月/本年/累计(日期范围括号标注) | | 实盘盈亏 | `(m_dBalance_end - m_dBalance_start) / m_dBalance_start` | | 回测策略 | 回测引擎计算结果 | | 基准指标 | 外部行情数据 | | 跑赢基准 | 实盘盈亏 - 基准指标 | | 跑赢回测 | 实盘盈亏 - 回测策略 | --- ### 3.3 成交记录 来源:`deal_daily` | 列名 | 数据字段 | |------|---------| | 时间 | `m_strTradeDate + m_strTradeTime` | | 代码 | `m_strInstrumentIDExchangeID` | | 名称 | `m_strInstrumentName` | | 资产 | `asset_type` | | 策略 | `m_strRemark`(颜色与资产一致) | | 方向 | `direction_cn`(买入红/卖出绿) | | 成交量 | `m_nVolume`(卖出为负数) | | 成交均价 | `m_dPrice` | | 手续费 | `m_dComission` | | 成交额 | `m_dTradeAmount` | | 操作 | 编辑 / 删除 | 筛选:日期范围 + 方向 + 资产类别。支持手动添加。 --- ### 3.4 已清仓标的 来源:`position_daily` 跨日对比(昨日有持仓今日无 = 清仓) | 列名 | 数据来源 | |------|---------| | 代码 | `m_strInstrumentIDExchangeID` | | 名称 | `m_strInstrumentName` | | 资产 | `asset_type` | | 策略 | `m_strRemark`(通过 `deal_daily` 关联) | | 盈亏金额 | `SUM(deal_daily 卖出额 - 买入额)` | | 开仓日期 | 首次出现在 `position_daily` 的 `snapshot_date` | | 平仓日期 | 最后出现在 `position_daily` 的 `snapshot_date` | | 操作 | 编辑 / 删除 | 支持手动添加。 --- ### 3.5 账户流水 来源:`deal_daily` 全量(含逆回购 `asset_type='repo'`) | 列名 | 数据字段 | |------|---------| | 时间 | `m_strTradeDate + m_strTradeTime` | | 代码 | `m_strInstrumentIDExchangeID` | | 名称 | `m_strInstrumentName` | | 资产 | `asset_type` | | 策略 | `m_strRemark` | | 方向 | `direction_cn` | | 成交量 | `m_nVolume` | | 成交价 | `m_dPrice` | | 成交额 | `m_dTradeAmount` | | 手续费 | `m_dComission` | | 成交编号 | `m_strTradeID` | | 操作 | 编辑 / 删除 | 筛选:日期范围 + 类型 + 资产。支持手动添加。 > **注意**:相比旧版,已移除"委托属性"(`m_strOptName`)列,该字段已从采集模块中去除。 --- ### 3.6 出入金记录 来源:`account_daily`,优先使用 QMT 直接采集的 `m_dDeposit`(入金)和 `m_dWithdraw`(出金)字段;若为 0 则回退到跨日对比推算(`m_dBalance` 变化 - `m_dPositionProfit` - `m_dCloseProfit` = 出入金)。 | 列名 | 数据来源 | |------|---------| | 日期 | `snapshot_date` | | 方向 | 入金(正)/ 出金(负) | | 入金 | `m_dDeposit` | | 出金 | `m_dWithdraw` | | 金额 | 入金 - 出金(或推算值) | | 账户余额 | `m_dBalance` | | 备注 | QMT采集 / 推算 / 手动录入 | | 操作 | 编辑 / 删除 | 支持手动添加(弹出表单:日期、方向、金额、备注)。 --- ## 4. 数据字段与采集接口对照 ### 4.1 account_daily 表(账户日快照) 对应采集函数:`fetch_accounts(C, account, config_code, snapshot_date)` > SQLite 表字段直接使用 QMT 原始字段名(`m_` 前缀),不再做翻译映射。 | 字段 | 类型 | 页面用途 | 逻辑分组 | |------|------|---------|----------| | `snapshot_date` | TEXT | 采集日期 | 标识 | | `m_strAccountID` | TEXT | 资金账号切换 | 标识 | | `m_strTradingDate` | TEXT | 交易日 | 标识 | | `m_dPreBalance` | REAL | 期初权益(涨跌幅基准) | 期初 | | `m_dDeposit` | REAL | 入金金额 | 资金流 | | `m_dWithdraw` | REAL | 出金金额 | 资金流 | | `m_dBalance` | REAL | 总资产、收益计算基准 | 资金概况 | | `m_dAvailable` | REAL | 总现金 | 资金概况 | | `m_dFetchBalance` | REAL | 可取资金 | 资金概况 | | `m_dFrozenCash` | REAL | 冻结资金 | 资金概况 | | `m_dStockValue` | REAL | 股票市值 | 持仓市值 | | `m_dFundValue` | REAL | 基金市值 | 持仓市值 | | `m_dLoanValue` | REAL | 转债市值 | 持仓市值 | | `m_dRepurchaseValue` | REAL | 逆回购市值 | 持仓市值 | | `m_dInstrumentValue` | REAL | 总市值 | 持仓市值 | | `m_dPositionProfit` | REAL | 持仓盈亏 | 盈亏 | | `m_dCloseProfit` | REAL | 平仓盈亏 | 盈亏 | | `m_dCommission` | REAL | 当日手续费 | 费用 | | `m_dAssureAsset` | REAL | 净资产 | 汇总 | ### 4.2 position_daily 表(持仓快照) 对应采集函数:`fetch_positions(C, account, config_code, snapshot_date)` | 字段 | 类型 | 页面用途 | 逻辑分组 | |------|------|---------|----------| | `snapshot_date` | TEXT | 快照日期 | 标识 | | `m_strInstrumentIDExchangeID` | TEXT | 证券代码(如 600519.SH) | 标的 | | `m_strInstrumentName` | TEXT | 证券名称 | 标的 | | `asset_type` | TEXT | 资产类别(stock/bond/etf/repo) | 标的 | | `m_nVolume` | INT | 持仓量 | 持仓量 | | `m_nCanUseVolume` | INT | 可用数量 | 持仓量 | | `m_dLastPrice` | REAL | 最新价 | 价格与市值 | | `m_dMarketValue` | REAL | 市值 | 价格与市值 | | `m_dOpenPrice` | REAL | 开仓价 | 成本 | | `m_dAvgOpenPrice` | REAL | 均价 | 成本 | | `m_dSingleCost` | REAL | 单位成本 | 成本 | | `m_dOpenCost` | REAL | 开仓成本 | 成本 | | `m_dPositionCost` | REAL | 持仓成本 | 成本 | | `m_dFloatProfit` | REAL | 浮动盈亏 | 盈亏 | | `m_dPositionProfit` | REAL | 持仓盈亏 | 盈亏 | | `m_dProfitRate` | REAL | 收益率 | 盈亏 | | `config_code` | TEXT | 配置编码 | 标识 | | `m_strAccountID` | TEXT | 资金账号 | 标识 | > **变更说明**:表名由 `holding_snapshot` 更正为 `position_daily`;证券代码字段由分离的 `instrument_id` + `exchange_id` 合并为 `m_strInstrumentIDExchangeID`。 ### 4.3 deal_daily 表(成交记录) 对应采集函数:`fetch_deals(C, account, config_code, snapshot_date)` | 字段 | 类型 | 页面用途 | 逻辑分组 | |------|------|---------|----------| | `snapshot_date` | TEXT | 快照日期 | 标识 | | `m_strInstrumentIDExchangeID` | TEXT | 证券代码(如 600519.SH) | 标的 | | `m_strInstrumentName` | TEXT | 证券名称 | 标的 | | `asset_type` | TEXT | 资产类别(stock/bond/etf/repo) | 标的 | | `m_strTradeID` | TEXT | 成交编号 | 委托 | | `m_nOffsetFlag` | INT | 买卖标记(48=买入,49=卖出) | 方向 | | `direction_cn` | TEXT | 买入/卖出 | 方向 | | `m_dPrice` | REAL | 成交均价 | 成交 | | `m_nVolume` | INT | 成交量(卖出为负数) | 成交 | | `m_dTradeAmount` | REAL | 成交额 | 成交 | | `m_dComission` | REAL | 手续费 | 费用 | | `m_strTradeDate` | TEXT | 成交日期 | 时间 | | `m_strTradeTime` | TEXT | 成交时间 | 时间 | | `config_code` | TEXT | 配置编码 | 标识 | | `m_strAccountID` | TEXT | 资金账号 | 标识 | | `m_strRemark` | TEXT | 策略ID(strategy_id) | 备注 | > **变更说明**:表名由 `trade_record` 更正为 `deal_daily`;已移除 `strategy_id`(直接使用 `m_strRemark`)、`remark_type`、`m_strOptName`(委托属性)字段;证券代码合并为 `m_strInstrumentIDExchangeID`。 > **注意**:原 `position_statistics` 表(4.4 节)已移除,该表不在采集模块范围内。持仓均价使用 `position_daily.m_dAvgOpenPrice`,资产占比通过 `m_dMarketValue / account_daily.m_dBalance` 计算。 --- ## 5. 配色规范 ### 5.1 资产类别 | 资产 | Tag 背景色 | Tag 文字色 | |------|-----------|-----------| | 转债 | `#fff7e6` | `#fa8c16` | | 股票 | `#e6f4ff` | `#1677ff` | | 基金 | `#f6ffed` | `#52c41a` | | 逆回购 | `#f9f0ff` | `#722ed1` | ### 5.2 策略名称颜色 策略名称颜色与所属资产类别一致: - 转债策略 → `#fa8c16`(橙色) - 股票策略 → `#1677ff`(蓝色) - 基金策略 → `#52c41a`(绿色) ### 5.3 涨跌颜色 - 盈利/上涨:`#ff4d4f`(红色) - 亏损/下跌:`#52c41a`(绿色) ### 5.4 收益曲线 | 曲线 | 颜色 | 样式 | |------|------|------| | 实盘收益 | `#ff4d4f`(红色) | 实线 | | 回测收益 | `#1677ff`(蓝色) | 实线 | | 基准收益 | `#faad14`(黄色) | 实线 | | 实盘回撤 | `#ff4d4f` | 阴影面积 | | 回测回撤 | `#1677ff` | 阴影面积 | | 基准回撤 | `#faad14` | 阴影面积 | --- ## 6. 交互规范 ### 6.1 通用交互 - 所有数据表格支持:筛选 + 翻页(10条/页) + 手动添加 + 编辑/删除 - 删除操作需 confirm 二次确认 - 手动添加点击后新增一行可编辑空白记录 - "开始分析"点击后根据基础设置参数重新计算全部数据 - "删除重记"需二次确认,删除当日全部三张表(deal_daily/position_daily/account_daily)数据并重新采集 ### 6.2 收益分析特殊交互 - 收益曲线从 0 点起算,默认展示本年 - 收益时间日期选择器含 7 个快捷方式(全部/本月/本年/近1月/近3月/近6月/近1年),位于日历下方 - 曲线图左 Y 轴为收益率,右 Y 轴为最大回撤 - 盈亏统计日期范围以括号形式跟在时间段名称后 --- ## 7. 移动端适配设计 ### 7.1 适配策略 移动端(375/414 断点)采用完全独立的布局方案,而非 PC 端的响应式缩放。 | 设计决策 | PC 端 | 移动端 | |---------|-------|--------| | 主色调 | 蓝色强调色(`--ld-color-brand-accent`) | 红色品牌色(`--ld-color-brand-primary`) | | 导航 | 顶部深蓝导航 + 左侧菜单 | 顶部白色导航栏 + 底部 TabBar | | 基础设置 | 页面顶部面板(始终可见) | 底部抽屉(点击"设置"打开) | | Tab 布局 | 横排固定 | 横向可滚动(scroll-tabs) | | 数据展示 | 表格(table) | 卡片列表(list-card) | | 分页 | 页码翻页器 | 上拉加载更多 | | 手动添加 | 表头右侧按钮 | FAB 浮动按钮(右下角) | | 删除重记 | 设置面板按钮 | 抽屉底部文字按钮(改为"删除当日数据") | ### 7.2 移动端特有交互 1. **底部抽屉设置**:基础设置面板折叠为底部抽屉,含拖拽手柄、日期快捷 chip、"开始分析"按钮 2. **卡片化列表**:所有数据表格替换为卡片列表,每条记录一张卡片,关键数据右上角突出显示 3. **筛选 Chip**:横向可滚动的 chip 组替代 PC 端的下拉选择器 4. **FAB 添加按钮**:固定在右下角的浮动圆形按钮,根据当前 Tab 弹出对应表单 5. **滑动操作**:Tab 支持 scrollIntoView 自动居中 ### 7.3 响应式断点 | 断点 | 适用设备 | 布局 | |------|---------|------| | ≤ 375px | iPhone SE/小屏手机 | 移动端布局,卡片单列 | | 376-414px | iPhone Plus/Max | 移动端布局,卡片单列 | | 415-768px | 平板竖屏 | 移动端布局,卡片可双列 | | ≥ 769px | 平板横屏/PC | PC 端布局 | --- ## 8. 原型文件 | 端 | 文件 | 说明 | |----|------|------| | PC 端 | `pages/post-market-analysis/index.html` | 1920/1440/1280 断点 | | 移动端 | `pages/post-market-analysis/mobile.html` | 375/414 断点 | 关联文档: - 实盘端数据采集:[盘后数据采集与分析模块 Wiki ID:286](https://mrdoc.lude.site/doc/286) - 实盘端系统文档:[qmt-extensions 实盘端系统文档 Wiki ID:84](https://mrdoc.lude.site/doc/84) --- ## 8. 变更记录 | 日期 | 内容 | |------|------| | 2026-04-08 | 初版原型设计文档 | | 2026-04-08 | 根据采集模块文档(ID:286)更新全部字段定义:表名统一(deal_daily/position_daily/account_daily);字段名改用 QMT 原始 `m_` 前缀;证券代码合并为 `m_strInstrumentIDExchangeID`;移除已删除字段(`strategy_id`/`remark_type`/`m_strOptName`);移除 `position_statistics` 表;新增 `m_dDeposit`/`m_dWithdraw`/`m_dAssureAsset` 等字段;出入金记录改用直接采集数据 | | 2026-04-09 | 新增移动端原型设计(mobile.html):底部抽屉设置、卡片列表、FAB 按钮、横向滚动 Tab、筛选 Chip;新增 §7 移动端适配设计章节 | | 2026-04-08 | 文档从"禄得-PC端网页开发"文集迁移至"禄得-UI_UX原型设计"文集 |
电子牛马
2026年4月9日 10:01
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码