 shuo-hugeandClaude Fable 5
|
2f7a4b0979
|
feat(strategy): 策略可读取指数/ETF日K (market_data 模块 + 白名单 + 测试)
Custom/AI 策略此前被沙箱隔离, filter_history(df, params) 只能拿到个股历史窗口,
无法读取指数K线, 也就做不了「大盘指数 MACD 死叉」这类市场级过滤。
本改动新增框架侧受信模块 backend/app/strategy/market_data.py, 暴露只读纯函数:
- get_index_daily / get_etf_daily: 读取指数/ETF 日K(含技术指标, 支持列下推)
- get_daily: 按 repo.resolve_asset_type 自动分派(指数/ETF/股票)
- list_index_symbols: 枚举已收录指数
模块线程安全懒加载 repo (DataStore() 默认 settings.data_dir, 与 main.py 同源),
未知 symbol/缺数据返回空 DataFrame 不抛; 不向策略暴露文件访问或写能力。
ai_generator._ALLOWED_IMPORT_MODULES 放行 "app.strategy.market_data",
使 AI 生成与磁盘 Custom 策略均可 import 该模块; 其余模块/危险调用照旧拦截。
附 9 项框架级测试: 白名单放行/拦截、注入 fake repo 后委托与日期规范化、
按资产类型分派、坏 symbol/缺数据返回空、list_index_symbols。对既有策略零影响。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-08-26 09:36:06 +08:00 |
|