Files
zhixing-system/.trellis/tasks/archive/2026-08/08-08-migrate-zhixing-b1/research/legacy-zhixing-b1.md
T
2026-08-09 12:34:02 +08:00

2.5 KiB

旧项目知行 B1 逻辑研究

来源

  • 公式原文:/Users/yuxuanhui/bcc-github/quant-project/zgnb/zgnb-project/docs/references/formulas/tongdaxin_xuangu_formula.txt
  • 旧策略入口:/Users/yuxuanhui/bcc-github/quant-project/zgnb/zgnb-project/src/zgnb/domain/strategy/xg_composite.py
  • 旧指标实现:/Users/yuxuanhui/bcc-github/quant-project/zgnb/zgnb-project/src/zgnb/shared/xg_indicators.py
  • 旧数据字段转换:/Users/yuxuanhui/bcc-github/quant-project/zgnb/zgnb-project/src/zgnb/infrastructure/data_source/tushare_adapter.py

已确认逻辑

xg_composite 先计算趋势白线、大哥黄线、BBI、短期/长期振荡器、KDJ、RSI、 振幅区间、缩量、大绿棒、异动、趋势和回踩条件,再执行 7 个子信号 mask:

  1. 超卖缩量拐头 B
  2. 超卖缩量 B
  3. 原始 B1
  4. 超卖超缩量 B
  5. 回踩白线 B
  6. 回踩超级 B
  7. 回踩黄线 B

旧实现将 7 个 mask OR 为 _存在B,在 select() 中按优先级找到第一个匹配后 break。新任务明确改为返回全部命中分类。

迁移时必须保留的语义

  • 数据升序;REF 使用前一交易日,不能用自然日偏移。
  • 趋势白线 = EMA(EMA(C, 10), 10)。
  • 大哥黄线 = (MA(C,14)+MA(C,28)+MA(C,57)+MA(C,114))/4。
  • 短期 使用 3 日最低价和 3 日最高收盘价,长期 使用 21 日窗口。
  • 宽幅代码为 68、30、4、8、9 开头;普通代码如果最近 200 行内出现 超过 15% 的上涨,也使用宽幅参数。
  • v1203 调整包含上涨十字星涨幅上限和原始 B1 的适当缩量分支。

旧实现与新任务的有意差异

  • 新策略标识为 zhixing_b1,不再使用 xg_composite 作为运行时名称。
  • 新分类值使用 zhixing_b1_* 前缀,不依赖旧 SignalCategory.XG_*。
  • 新实现保留同一股票同一交易日的全部命中分类。
  • 新实现目标日由显式 target_trade_date 决定,不取数据最后一行作为隐式目标。
  • 新实现只使用新项目 PostgreSQL 的 qfq 日线;旧项目 CSV 中的 market_cap 是 初始化时取到的最新市值复制值,不能作为历史事实。
  • 新测试运行时不导入旧项目;旧项目只用于生成固定 fixture 和 golden 期望。

现有 fixture 线索

旧项目已有完整 CSV 和 SQLite 信号结果,可从 data/raw 选取少量普通代码、宽幅 代码和已命中日期作为固定样本。由于旧实现没有记录同日多分类命中,需另加人工 构造样本验证新任务要求的多信号结果。