以AI量化为生:17.系统架构优化 - 指标模块化与动态加载
目录结构更清晰扩展机制更灵活兼容性更好macOS不崩溃了本文是《以AI量化为生》系列文章的第17篇,完整代码已开源至GitHub:https://github.com/seasonstar/atmquant本文内容仅供学习交流,不构成任何投资建议。交易有风险,投资需谨慎。
本文是《以AI量化为生》系列的第17篇,记录ATMQuant系统的一次架构升级。

今天花了一天时间重构了指标系统,主要解决了目录结构混乱、扩展困难和macOS崩溃三个问题。一共做了6次提交,下面直接说改了什么。
1. 目录重构:分离图表和指标
以前core/charts/目录里既有图表容器(enhanced_chart_widget.py、dual_chart_widget.py),又有指标实现(boll_item.py、rsi_item.py),混在一起不好管理。
现在拆成两个目录:
core/
├── charts/ # 图表容器和UI组件
└── indicators/ # 技术指标实现
职责清晰了,找代码也快了。涉及15个文件的导入路径调整。
2. 条件导入:解决兼容性问题
新的core/indicators/__init__.py分两部分:
# 基础指标 - 直接导入
from .boll_item import BollItem
from .rsi_item import RsiItem
# ...
# 扩展指标 - try-except
try:
from .enhanced_volume_item import EnhancedVolumeItem
__all__.append("EnhancedVolumeItem")
except ImportError:
pass
这样基础版用户不会因为缺少扩展指标文件而报错,高级版用户有文件就自动导入。
3. .gitignore:否定模式
用否定模式管理指标文件:
core/indicators/* # 忽略所有
!core/indicators/__init__.py # 保留基础文件
!core/indicators/boll_item.py
# ... 其他基础指标
以后新增的指标自动被忽略,不用手动维护列表。
4. 动态加载:配置字典管理
在enhanced_chart_widget.py里用配置字典管理扩展指标:
EXTENDED_INDICATORS_CONFIG = {
"fibonacci": {
"module": "fibonacci_entry_bands_item",
"class": "FibonacciEntryBandsItem",
"type": "main",
"default_visible": False,
},
"zlema": {...},
"adaptive_macd": {...},
# 共8个扩展指标
}
启动时自动尝试加载,文件存在就注册到图表,不存在就跳过。用户只需复制文件,不用改代码。
5. 成交量指标:智能降级
try:
from core.indicators.enhanced_volume_item import EnhancedVolumeItem
VolumeItem = EnhancedVolumeItem
except ImportError:
from vnpy.chart import VolumeItem
优先用增强版(带买卖量分解),没有就降级到基础版。
6. 崩溃修复:移除emoji
macOS平台打开K线图会bus error,排查发现是Qt渲染emoji字符的问题。
批量替换:
⚠️→[ALERT]▲→[BUY]▼→[SELL]
涉及zlema_item.py、supertrend_item.py等指标文件,还有widget.py的注释。测试代码保留了emoji用于复现问题。
7. 其他调整
- X轴显示优化:只有最后一个可见副图显示X轴
- 主图高度:从300调整为250
- 配置按钮:从"…“改为”[x]"
总结
这次重构的核心是:
- 目录结构更清晰
- 扩展机制更灵活
- 兼容性更好
- macOS不崩溃了
本文是《以AI量化为生》系列文章的第17篇,完整代码已开源至GitHub:https://github.com/seasonstar/atmquant
本文内容仅供学习交流,不构成任何投资建议。交易有风险,投资需谨慎。
加入「量策堂·AI算法指标策略」
想系统性掌握策略研发、指标可视化与回测优化?加入我的知识星球,获得持续、体系化的成长支持:

往期文章回顾
《以AI量化为生》系列
《量化指标解码》系列
- 量化指标解码15:Adaptive MACD Deluxe - 会自己调参的智能MACD
- 量化指标解码14:Supertrended RSI - RSI与趋势跟踪的完美融合
- 量化指标解码13:WaveTrend波浪趋势 - 震荡行情的超买超卖捕手
更多推荐


所有评论(0)