深色模式
错单清理工具使用说明
用途:核查并清理"限价撮合取价 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执行顺序(保证统计正确):
- 生成
audit_backup_<时间>.sql备份(含被删行完整内容,可回滚); - 先删
signal_history(错单关联的统计行); - 再删
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或本地),不会碰其他库。
五、回滚(如误删)
- 打开生成的
audit_backup_<时间>.sql; - 每行是
-- 表名 | 字段=值 | ...的注释格式; - 按注释内容手动 INSERT 回对应表(或用其中的值构造 INSERT)。