Skip to content

错单清理工具使用说明

用途:核查并清理"限价撮合取价 bug"导致的错误成交(如 FG609 卖空 919), 使这段时间的盈亏统计恢复正常。工具只连你本机/局域网配置的 futures 库,默认只读。

一、编译

在项目根目录(有 Futures.Tools.slnx)执行:

bash
dotnet build tools/AutoTradeAuditTool/AutoTradeAuditTool.csproj -c Release

或发布成独立 exe:

bash
dotnet publish tools/AutoTradeAuditTool -c Release -r win-x64 --self-contained true -o publish/audit-tool

二、运行(三步走)

第 1 步:只读对账(不改数据)

bash
AutoTradeAuditTool --config "<桌面config目录>"
# 例:--config "D:\code\futures\src\Futures.Desktop\bin\Debug\net9.0-windows\config"

输出:

  • 🔴 确定错单(成交价超出当日真实 high/low);
  • 🟠 无法核对(当日无行情数据);
  • 🟢 正常成交。

config 目录是桌面程序输出目录下的 config(含加密的 PG 密码),工具复用该配置连库。

第 2 步:预览将清理的错单(不动数据)

bash
AutoTradeAuditTool --config "<桌面config目录>" --preview

显示每条错单关联的 signal_history(id / pnl / 是否已平仓),确认要清理的对象。

第 3 步:执行清理(会先备份)

bash
AutoTradeAuditTool --config "<桌面config目录>" --clean

执行顺序(保证统计正确):

  1. 生成 audit_backup_<时间>.sql 备份(含被删行完整内容,可回滚);
  2. 先删 signal_history(错单关联的统计行);
  3. 再删 trading_positions(错单持仓)。

可选:精确删除指定 signal_history id(pos=0 错单)

部分错单信号在 trading_positions 中已无关联持仓(pos=0),按 position_id 删不到。 此时可预览/删除具体信号 id:

bash
# 预览(不动数据)
AutoTradeAuditTool --config "<桌面config目录>" --preview --clean-ids 249,546
# 执行删除(先备份,仅删 signal_history,不碰 trading_positions)
AutoTradeAuditTool --config "<桌面config目录>" --clean --clean-ids 249,546

三、清理后

  • 信号历史页GetStatsAsync 实时从 signal_history 聚合 → 删除后自动重算,盈亏恢复正常;
  • 持仓页 / 风控页:错单持仓删除后消失;
  • 执行对账(P0-4):基于 signal_history 聚合 → 自动恢复;
  • auto_trade_log:保留不动(仅日志,不影响统计,供追溯)。

四、安全说明

  • 工具默认只读(不传 --clean 绝不删数据);
  • --clean 前强制备份,可回滚;
  • 只处理 🔴 确定错单;🟠(当日无行情)不自动清理,避免误删;
  • 连接的库 = 桌面 config 里配置的库(10.10.44.35/futures 或本地),不会碰其他库。

五、回滚(如误删)

  1. 打开生成的 audit_backup_<时间>.sql
  2. 每行是 -- 表名 | 字段=值 | ... 的注释格式;
  3. 按注释内容手动 INSERT 回对应表(或用其中的值构造 INSERT)。

瓯衍期货分析系统 · 温州博益网络科技有限公司