Files
tick-stock-panel/backend/app/strategy
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
..
2026-06-18 17:18:23 +08:00
2026-07-18 00:49:28 +08:00