# 入场思路记录(entry_context) ## 目的 把「入场原因 + 经历的思路/过程」写入每笔订单,便于事后综合分析策略执行效果: 不仅看结果(盈/亏、止盈/止损),还能看过程(当时信号强度、市场状态、过滤是否通过等),分析更准确、优化更有依据。 ## 实现方式 - **数据库**:`trades` 表新增字段 `entry_context`(JSON,可为空)。 - **写入时机**:自动开仓且订单成交后,在保存交易记录时一并写入。 - **内容**:由策略在开仓前构建一个字典,经 `position_manager` 传给 `Trade.create`,以 JSON 存入。 ## entry_context 字段说明 每笔自动开仓订单的 `entry_context` 目前包含(示例): | 键 | 类型 | 说明 | |----|------|------| | `signal_strength` | int | 信号强度 0–10 | | `market_regime` | str | 市场状态,如 trending / ranging | | `trend_4h` | str | 4H 趋势方向(来自策略) | | `change_percent` | float | 24h 涨跌幅(%) | | `direction` | str | 交易方向 BUY/SELL | | `reason` | str | 入场原因文本(与 entry_reason 一致) | | `rsi` | float | 入场时 RSI(若有) | | `volume_confirmed` | bool | 是否通过成交量确认 | | `filters_passed` | list | 通过的过滤项,如 only_trending, should_trade, volume_ok, signal_ok | | `macd_histogram` | float | 可选,MACD 柱状值 | | `atr` | float | 可选,入场时 ATR | 后续如需增加「经历的思路」(例如:短周期方向、趋势过滤结果、是否在冷却等),可在 strategy 里往同一 dict 里追加,再写入即可。 ## 数据库迁移 首次使用需执行迁移,为 `trades` 表增加 `entry_context` 列: ```bash # 在 backend 目录或项目根目录执行(按你当前 DB 配置) mysql -u your_user -p your_db < backend/database/add_entry_context.sql ``` 若库中已有该列,脚本会跳过,不会重复添加。 ## API 与导出 - **GET /api/trades**:返回的每条交易里会带 `entry_context`;若 DB 驱动返回的是 JSON 字符串,接口会先解析成对象再返回,便于前端或分析脚本使用。 - **导出/统计**:凡基于该 API 或直接查 `trades` 的导出(如「交易记录_xxx.json」),只要包含 `entry_context` 字段,即可用于按「入场思路」做统计与归因分析。 ## 分析时怎么用 - **按信号强度**:统计 `entry_context.signal_strength` 与胜率/盈亏比的关系(例如 8 分 vs 9 分的表现)。 - **按市场状态**:对比 `market_regime=trending` 与 `ranging` 下的胜率和平均盈亏。 - **按过滤通过情况**:看 `filters_passed` 与最终结果是否一致(例如 volume_ok 通过后是否仍常止损)。 - **归因单笔**:某笔止损/止盈时,结合 `reason`、`trend_4h`、`rsi` 等还原当时决策依据,判断是信号问题、过滤不足还是行情突变。 这样就能在「只看结果」之外,用「过程 + 结果」一起评估和优化策略。