3.0 KiB
3.0 KiB
入场思路记录(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 列:
# 在 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等还原当时决策依据,判断是信号问题、过滤不足还是行情突变。
这样就能在「只看结果」之外,用「过程 + 结果」一起评估和优化策略。