auto_trade_sys/docs/ENTRY_CONTEXT_入场思路记录.md
薇薇安 0a0bcd941b a
2026-02-01 20:45:18 +08:00

3.0 KiB
Raw Blame History

入场思路记录entry_context

目的

把「入场原因 + 经历的思路/过程」写入每笔订单,便于事后综合分析策略执行效果:
不仅看结果(盈/亏、止盈/止损),还能看过程(当时信号强度、市场状态、过滤是否通过等),分析更准确、优化更有依据。

实现方式

  • 数据库trades 表新增字段 entry_contextJSON可为空
  • 写入时机:自动开仓且订单成交后,在保存交易记录时一并写入。
  • 内容:由策略在开仓前构建一个字典,经 position_manager 传给 Trade.create,以 JSON 存入。

entry_context 字段说明

每笔自动开仓订单的 entry_context 目前包含(示例):

类型 说明
signal_strength int 信号强度 010
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 列:

# 在 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=trendingranging 下的胜率和平均盈亏。
  • 按过滤通过情况:看 filters_passed 与最终结果是否一致(例如 volume_ok 通过后是否仍常止损)。
  • 归因单笔:某笔止损/止盈时,结合 reasontrend_4hrsi 等还原当时决策依据,判断是信号问题、过滤不足还是行情突变。

这样就能在「只看结果」之外,用「过程 + 结果」一起评估和优化策略。