# trades 表 vs binance_trades 表:角色与使用建议 ## 两张表的角色 ### trades 表(本地交易记录) - **数据来源**:本系统在**开仓/平仓、补建、同步**时写入或更新。 - **粒度**:一笔「回合」一条记录(开仓 → 平仓),含 entry_price、exit_price、entry_time、exit_time、pnl、exit_reason、entry_order_id、exit_order_id 等。 - **主要用途**:**主要支持交易与监控相关**——实盘运行时的持仓状态、风控、冷却、对账、pending 补全等;用户端「交易记录」可选「本地记录」查看本系统回合,但**查询/分析订单建议以 binance_trades 为准**。 ### binance_trades 表(币安成交同步) - **数据来源**:定时任务 `scripts/sync_binance_orders.py` 从币安 API 拉取 **userTrades(成交)** 入库。 - **同步节奏与延时**:脚本按 **每 3 小时的第 0 分钟** 执行(crontab 示例:`0 */3 * * *`),存在一定延时性,页面看到的「币安成交」最多可能滞后约 3 小时;如需最新可手动执行一次脚本。 - **粒度**:**一笔成交一条记录**(含 trade_id、order_id、symbol、side、price、qty、realized_pnl、commission、trade_time 等)。 - **主要用途**: 1. **管理员「数据管理」**:按账号/时间/交易对查询已同步的币安成交,做分析与导出。 2. **统计与分析**:`TradeStats` 聚合(7 天统计、按交易对、按小时等)**优先使用 binance_trades**,无数据时再回退到 trades。 ## 结论与建议 1. **分析、统计、查询「订单/成交」** **以 binance_trades 为准即可**。数据与交易所一致,更适合做盈亏分析、策略回看。系统已按「优先 binance_trades,无则 trades」实现。 2. **用户端「交易记录」为何经常没数据?** 因为当前只查 **trades**。若实盘不全在本系统跑、或同步/补建不完整,trades 会少或为空。 **建议**:用户端「交易记录」**默认从 binance_trades 查**(按当前账号 + 时间范围),与管理员在数据管理里看到的来源一致,更可靠。 3. **trades 表是否还有用?** **有用,但角色已明确为「主要支持交易、监控」**:开平仓状态、风控、冷却、对账、pending 补全等仍依赖 trades;**订单查询与盈亏分析**以 binance_trades 为主。 ## 实施情况 - 用户端「交易记录」支持数据源切换: - **币安成交(binance_trades)**:默认。按当前账号从 DB 已同步的 binance_trades 查询,展示成交明细(时间、方向、价格、数量、已实现盈亏、手续费等)。需先在服务器运行 `scripts/sync_binance_orders.py` 同步。**数据由定时任务每 3 小时的第 0 分钟同步,存在一定延时(最多约 3 小时)。** - **本地记录(trades)**:保留原有逻辑,展示回合级记录(开/平仓时间、入场/出场价、平仓原因等)。 - 后端:`GET /api/trades?source=binance&period=7d&symbol=...` 使用当前账号从 binance_trades 查询并返回列表,与管理员数据管理同源。