fix(factors): 修复 AST 优化器并发命名冲突及逻辑运算支持

- 修复 ExpressionFlattener 跨实例临时名称冲突
- 添加 & 和 | 逻辑运算符的 DSL/Parser/Translator 支持
- 增加回归测试验证修复
This commit is contained in:
2026-03-14 01:17:14 +08:00
parent c8808d07eb
commit 2034d60fbb
6 changed files with 220 additions and 8 deletions

View File

@@ -937,6 +937,37 @@ LSP 报错Syntax error on line 45
python tests/test_sync.py
```
### 因子编写规范
**⚠️ 强制要求:编写因子时,优先使用字符串表达式而非 DSL 表达式。**
1. **推荐方式(字符串表达式)**
```python
from src.factors import FactorEngine
engine = FactorEngine()
engine.add_factor("ma20", "ts_mean(close, 20)")
engine.add_factor("alpha", "cs_rank(ts_mean(close, 5) - ts_mean(close, 20))")
```
2. **不推荐方式DSL 表达式)**
```python
from src.factors.api import close, ts_mean, cs_rank
engine.register("ma20", ts_mean(close, 20)) # 不推荐
```
3. **原因说明**
- 字符串表达式更易于序列化存储到因子元数据(`factors.jsonl`
- 字符串表达式支持从元数据动态加载和复用
- 字符串表达式便于在配置文件中定义和维护
- 与 `src/scripts/register_factors.py` 批量注册脚本兼容
4. **使用场景**
- ✅ 在 `register_factors.py` 的 `FACTORS` 列表中定义因子
- ✅ 动态添加因子到 FactorEngine
- ✅ 从因子元数据查询并注册因子
### Emoji 表情禁用规则
**⚠️ 强制要求:代码和测试文件中禁止出现 emoji 表情。**