5.1 KiB
5.1 KiB
新架构说明文档
概述
本项目已重构为模块化的策略执行系统,支持定时执行多个策略任务。新架构分为四个层次:
- 数据层: TushareFetcher + StockPoolManager
- 策略层: BaseStrategy + 具体策略实现
- 执行层: TaskScheduler + StrategyExecutor
- 通知层: NotificationManager
核心工作流程
每个策略任务都遵循以下标准流程:
1. 根据规则获取股票池 → 2. 传递给策略进行分析 → 3. 以多种方式呈现或通知结果
模块详解
1. 数据层
TushareFetcher
- 负责从TuShare API获取股票数据
- 支持历史K线、热榜数据、基本信息等
- 已集成token管理和缓存机制
StockPoolManager
- 管理不同的股票池获取规则
- 内置规则:
tushare_hot: 同花顺热榜combined_hot: 合并热门(同花顺+东财)leading_stocks: 龙头牛股- 支持自定义股票列表
2. 策略层
BaseStrategy (抽象基类)
- 定义统一的策略接口
- 标准化输入输出格式
- 提供股票池批量分析能力
KLinePatternStrategy
- 实现K线形态识别策略
- 继承自BaseStrategy
- 支持多时间周期分析
- 集成回踩监控功能
3. 执行层
StrategyExecutor
- 协调股票池获取和策略分析
- 管理策略注册和执行
- 统一的结果处理和通知
TaskScheduler
- 支持多种调度规则
- 任务执行历史和统计
- 灵活的任务管理
4. 通知层
NotificationManager
- 支持多种通知方式
- 策略结果汇总推送
- 特殊事件提醒
快速开始
基础使用
# 1. 初始化组件
from src.data.tushare_fetcher import TushareFetcher
from src.data.stock_pool_manager import StockPoolManager
from src.strategy.kline_pattern_strategy import KLinePatternStrategy
from src.execution.strategy_executor import StrategyExecutor
from src.utils.notification import NotificationManager
# 创建实例
fetcher = TushareFetcher()
pool_manager = StockPoolManager(fetcher)
notification_manager = NotificationManager(config)
executor = StrategyExecutor(pool_manager, notification_manager)
# 2. 注册策略
strategy = KLinePatternStrategy(fetcher, notification_manager, config)
executor.register_strategy("kline_pattern", strategy)
# 3. 执行任务
result = executor.execute_task(
task_id="test_task",
strategy_id="kline_pattern",
stock_pool_rule="tushare_hot",
max_stocks=20
)
定时任务
from src.execution.task_scheduler import TaskScheduler
# 创建调度器
scheduler = TaskScheduler()
# 添加定时任务
task_func = executor.create_task_function(
strategy_id="kline_pattern",
stock_pool_rule="tushare_hot",
max_stocks=30
)
scheduler.add_task(
task_id="morning_scan",
name="晨间扫描",
func=task_func,
schedule_rule="weekdays at 09:00"
)
# 启动调度器
scheduler.start()
支持的调度规则
"every 30 minutes"- 每30分钟"every 1 hour"- 每1小时"daily at 09:30"- 每日09:30"weekdays at 14:00"- 工作日14:00"monday at 10:00"- 每周一10:00
配置示例
策略配置
strategy_config = {
'min_entity_ratio': 0.55,
'final_yang_min_ratio': 0.40,
'max_turnover_ratio': 40.0,
'timeframes': ['daily'],
'pullback_tolerance': 0.02,
'monitor_days': 30
}
股票池参数
# 同花顺热榜
{"limit": 50}
# 合并热门
{"limit_per_source": 30, "final_limit": 50}
# 龙头股
{"top_boards": 8, "stocks_per_board": 3, "min_score": 70.0}
扩展指南
添加新的股票池规则
- 继承
StockPoolRule基类 - 实现
get_stocks()和get_rule_name()方法 - 注册到
StockPoolManager
class MyCustomRule(StockPoolRule):
def get_stocks(self, fetcher, **kwargs):
# 自定义获取逻辑
return stock_list
def get_rule_name(self):
return "我的自定义规则"
# 注册
pool_manager.register_rule("my_rule", MyCustomRule())
添加新策略
- 继承
BaseStrategy基类 - 实现
analyze_stock()和get_strategy_description()方法 - 注册到
StrategyExecutor
class MyStrategy(BaseStrategy):
def analyze_stock(self, stock_code, timeframes=None):
# 实现分析逻辑
return {timeframe: StrategyResult(...)}
def get_strategy_description(self):
return "我的策略描述"
# 注册
executor.register_strategy("my_strategy", MyStrategy(...))
示例文件
examples/new_architecture_example.py- 完整架构演示examples/task_config_examples.py- 常见任务配置示例
优势总结
✅ 模块化设计: 职责清晰,易于维护扩展 ✅ 灵活配置: 支持多种股票池和调度规则 ✅ 标准化接口: 统一的策略和结果格式 ✅ 任务调度: 强大的定时执行能力 ✅ 统一通知: 完善的结果推送机制 ✅ 缓存优化: 避免重复API调用 ✅ 错误处理: 完整的异常处理和日志记录
新架构完全满足了原始需求:通过简单配置实现复杂的多策略定时执行和结果通知系统。