Files
one_divine_lot/docs/05-需求池/已完成/R-007.md
T
kyugao aef27dcd3f docs: R-007 需求归档,迭代 05 完结
- R-007 移入已完成/(完整需求摘要+决策+实现记录)
- 需求池索引更新(已实现/已归档)
- 迭代 05 复盘更新(验收通过,老师确认完结)
2026-09-01 14:47:26 +08:00

6.8 KiB
Raw Blame History

R-007 交易记录接入(订单与成交数据 + 时间段查询)· 已完成

归档日期:2026-09-01 | 需求状态:已完成 原索引:docs/05-需求池/需求池索引.md(主索引保留 R-007 条目,指向本归档) 实现迭代:05-交易记录接入(验收通过,迭代复盘见 docs/04-迭代记录/05-交易记录接入/迭代复盘.md 关联计划:PLAN-006docs/02-计划/计划-交易记录接入.md)


状态:已定稿2026-09-01,老师确认)| 登记日期:2026-09-01 来源:老师指令(2026-09-01 优先级:P1

需求描述

在神之一手(one-divine-lot 插件)的「交易记录」tab 接入 QMT Bridge 当日委托(/trade/orders)与当日成交(/trade/trades

  • 单表合并展示:委托为主行,按 m_strOrderSysID 合并成交信息(聚合成交量/加权均价/金额/费用),点击展开逐笔成交明细;
  • 时间段查询:标题 + 时间段控件同一行(今日/本周/本月快捷按钮 + 手动起止日期),匹配历史接口按时间范围查询的形态;
  • 费用计算:佣金费率 = 万分之 m_dCommission(如 0.852 = 万0.852),不足 5 元按 5 元(账号没免五);卖出加印花税(万分之5);双向过户费(万分之0.1);同一委托分笔成交合并算一次佣金
  • 排序:委托主行默认降序,支持表头点击手动排序;
  • 日期导航:为老师完善 QMT Bridge 历史成交接口预留(历史范围本期占位)。

核心逻辑(定稿版)

  1. 单表合并:委托行 = 一笔委托,按 m_strOrderSysID 聚合该委托全部成交(成交量 Σ、加权均价、金额 Σ、费用 Σ);展开/折叠查看每笔成交明细(2026-09-01 老师拍板);
  2. 方向判定m_nDirection=48 恒为 EEntrustBS 操作标记(官方 innerApi 字典),真实方向在 m_nOffsetFlag48=买入/49=卖出)+ m_strOptName 交叉验证(Q3 闭环);
  3. 交互单向模型:preset 意图状态记录用户点的快捷按钮(操作→状态→UI),不做「范围反推按钮」反向推断;手动改日期清除 preset(2026-09-01 老师纠正);
  4. 快捷范围(完整互斥):今日=最近交易日单日;本周=所在自然周周一周五(不考虑周六日);本月=所在自然月1号月末(2026-09-01 老师纠正:不做截至今天截断);
  5. 费用计算
    • 佣金 = Σ成交额 × (万分之m_dCommission),不足 5 元按 5 元(没免五);
    • 印花税 = 卖出单边 × 万分之5(2023-08-28 起标准);
    • 过户费 = 双向 × 万分之0.1(2022-04-29 起标准,无最低,中登收取);
    • 同一委托分笔成交合并算一次佣金;多笔独立委托各自算(2026-09-01 老师修正);
  6. 数据时效/trade/orders 与 /trade/trades 仅当日数据(get_trade_detail_data 读客户端缓存,官方 Q&A 确认),历史查询需老师完善 QMT Bridge 接口;
  7. 刷新:仅「今日」范围 4s 轮询;其他范围一次性查询。

数据模型(语义化映射)

OrderorderId/code/name/exchange/direction/directionCode/optName/status/orderVolume/tradedVolume/totalVolume/limitPrice/tradedPrice/amount/insertDate/insertTime/cancelInfo/errorMsg

TradetradeId/orderId/code/name/exchange/direction/directionCode/optName/price/volume/amount/commissionRateWan(佣金费率万分之)/tradeDate/tradeTime

费用calcOrderFees(委托级):totalAmount/commission(最低5元一次)/stampTax(卖出)/transferFee(双向)/total

边界(不做)

  • 历史(非当日)交易数据查询实现(老师完善 QMT Bridge 接口后接入,服务端已预留 start/end 透传);
  • 交易数据本地持久化(Q5 本期不做,跨日复盘待历史接口就绪后评估);
  • 按策略过滤交易(Q10 后续迭代,strategy_name 与插件策略体系打通);
  • 下单/撤单等交易操作(目标-007 人机合一控制权另议)。

关键决策(Q1-Q11 结论)

# 问题 结论
Q1 展示范围 单表合并:委托主行 + 展开成交明细(老师拍板)
Q2 刷新机制 服务端中转 + 前端 4s 轮询(仅今日范围)
Q3 方向判定 m_nOffsetFlag48买/49卖)+ m_strOptName 交叉验证
Q4 状态展示 全量 + 状态列中文映射(未报/已报/部成/已成/已撤/废单)
Q5 持久化 本期不做(跨日复盘待历史接口)
Q6 关联形态 单表合并 + 展开/折叠(老师拍板)
Q7 方向着色 红买绿卖
Q8 精度 成交额/金额 2 位、手续费/费用 2 位、成交量整数
Q9 优先级 P1
Q10 策略联动 本期不做(后续迭代)
Q11 时间段查询 今日/本周/本月快捷 + 手动起止;完整互斥范围;单向交互模型

讨论与修正记录

  • 2026-09-01 登记 + 技术研究(API 字段全表 / 方向判定 / 数据时效 / sample data);
  • 2026-09-01 范围定稿:当日订单+成交 + 日期导航(老师将完善历史接口);
  • 2026-09-01 展示设计定稿:单表合并 + 展开明细 + 排序降序;
  • 2026-09-01 修正一:快捷按钮 今日/本周/上周 → 今日/本周/本月;
  • 2026-09-01 修正二:快捷范围为完整时间段(不做截至今天截断,操作逻辑问题);
  • 2026-09-01 修正三:交互单向模型(操作→状态→UI,不做反向推断);
  • 2026-09-01 修正四:本周 = 周一~周五(不考虑周六日);
  • 2026-09-01 修正五:佣金按委托级合并计费(分笔成交只收一次佣金);
  • 2026-09-01 费用规则:m_dCommission = 佣金费率万分之,最低5元,印花税/过户费费率确认。

实现记录

内容
实现迭代 05-交易记录接入
服务端 QmtBridgeRestDataSourcegetOrders/getTrades/getTradingDates/calcOrderFees)、api/trades.jsorders/trades/trading-dates
客户端 TradeRecordsTab.jsx(单表合并+排序+轮询)、RangeSelector.jsx(时间段选择)
构建安装 pnpm run build + 宿主重启(服务端)/ 页面刷新(客户端)
提交 bb3f8bd(迭代03-05)、8caeb76(佣金合并计费)、08c4ad3(箭头样式)

验收结果

  • 服务端三端点端到端实测:orders/trades/trading-dates 返回真实数据)
  • 单表合并 + 展开明细:(博纳影业卖出 200股@6.00 委托+成交完整链路)
  • 费用计算:(佣金5 + 印花税0.6 + 过户费0.012 = 5.612;委托级合并计费验证通过)
  • 时间段查询(今日/本周/本月 + 手动):
  • 排序(默认降序 + 表头手动):
  • 方向判定(m_nOffsetFlag + optName):
  • 现有功能不回归:(持仓/策略/行情/连接配置正常)