基于多策略技术指标的股票分析系统,支持6种策略综合分析、批量处理、结果可视化和数据持久化。
- 🔍 多策略综合分析: 支持6种技术分析策略的综合分析和投票推荐
- 📊 批量处理: 支持1000只股票的并行批量分析
- 💾 数据持久化: 分析结果自动保存到MySQL数据库
- 📈 可视化图表: 交互式K线图表,显示买卖信号和技术指标
- 🖥️ 命令行接口: 完整的CLI工具,支持各种操作
- 📤 结果导出: 支持Excel格式数据导出
- 🎯 智能推荐: 基于多策略投票的综合推荐系统
- 🌐 Web界面: 直观的网页dashboard展示批量分析结果
系统目前支持6种主流技术分析策略:
- ADXTrendStrategy - ADX趋势强度策略
- MACDStrategy - MACD金叉死叉策略
- RSIStrategy - RSI超买超卖策略
- BollingerStrategy - 布林带均值回归策略
- MACrossoverStrategy - 移动平均线交叉策略
- KDJStrategy - KDJ随机指标策略
cn_stocks/
├── analyzer/ # 分析器模块
├── database/ # 数据库操作
├── engine/ # 批量分析引擎
├── strategy/ # 策略模块 (6种策略)
├── tools/ # 数据拉取工具
├── visualization/ # 图表可视化
├── web/ # Web界面
│ ├── templates/ # HTML模板
│ └── static/ # 静态文件
├── main.py # 主程序入口
├── web_app.py # Web服务入口
└── requirements.txt # 依赖包
pip install -r requirements.txt修改 core/db_utils.py 中的数据库连接信息:
_host = 'localhost'
_user = 'root'
_password = 'root'
_database = 'stock_cursor'python main.py init-dbpython tools/fetch_15min_data.py --start-date 2025-07-01 --end-date 2025-08-31 --limit 100# 查看所有可用策略
python main.py list-strategies
# 查看前20只可用股票
python main.py list-stocks --limit 20# 使用所有6种策略进行综合分析
python main.py analyze --stock-code 300024.SZ --show-chart
# 输出示例:
# === 综合分析结果 ===
# 策略投票结果:
# 买入: 1 票, 卖出: 1 票, 观望: 4 票
#
# 综合推荐: 倾向观望 - 4/6策略支持(平均置信度50.0%)
# 一致性: 66.7%
#
# 各策略详细结果:
# 📉 ADXTrendStrategy - 卖出 (100.0%) - ADX弱化
# 📈 MACDStrategy - 买入 (60.0%) - MACD在信号线上方
# ...# 使用单个策略分析
python main.py analyze --stock-code 300024.SZ --strategy MACDStrategy --show-chart# 批量分析100只股票,使用所有策略
python main.py batch --limit 100 --show-top-signals --save-db
# 输出示例:
# --- 策略汇总 ---
# ADXTrendStrategy: 成功: 95/100, 信号分布: 买入 20, 卖出 35, 观望 40
# MACDStrategy: 成功: 98/100, 信号分布: 买入 25, 卖出 18, 观望 55
# ...
#
# --- 多策略综合推荐 (前10只) ---
# 1. 📈 300059.SZ - 买入
# 一致性: 83.3% (5买/0卖/1观望)
# 推荐: 强烈买入 - 5/6策略一致(平均置信度85.2%)# 批量分析,使用指定策略
python main.py batch --limit 100 --strategies ADXTrendStrategy MACDStrategy --save-db
# 使用单个策略
python main.py batch --limit 100 --strategies MACDStrategy --show-top-signals# 查询买入信号
python main.py query --signal 买入 --limit 20
# 查询单只股票历史
python main.py query --stock-code 300024.SZ --strategy ADXTrendStrategy
# 查看信号统计
python main.py query --days 7# 导出最近7天的分析数据
python main.py export --output-file results.xlsx --days 7
# 清理30天前的旧数据
python main.py clean --days-to-keep 30# 启动Web服务
python web_app.py
# 浏览器访问: http://localhost:5002Web界面功能:
- 📊 批量分析历史: 查看所有历史批量分析记录
- 🚀 在线分析: 直接在网页上启动新的批量分析
- 📈 交互图表: 点击查看每只股票的详细技术分析图表
- 📋 策略对比: 对比不同策略的分析结果和一致性
- 🔍 信号筛选: 按买入/卖出/观望信号筛选股票
- 📱 响应式设计: 支持PC和移动端访问
- 特点: 识别和跟随强趋势
- 买入: ADX > 30且上升,DI+ > DI-,结合多指标确认
- 卖出: ADX下降或DI-转强,趋势反转
- 适用: 趋势明确的市场
- 特点: 基于MACD指标的经典信号
- 买入: MACD线上穿信号线(金叉)
- 卖出: MACD线下穿信号线(死叉)
- 适用: 中长期趋势判断
- 特点: 识别超买超卖区域的反转机会
- 买入: RSI < 30(超卖)且开始回升
- 卖出: RSI > 70(超买)且开始回落
- 适用: 震荡市场
- 特点: 基于价格回归中轴的特性
- 买入: 价格触及下轨,RSI确认超卖
- 卖出: 价格触及上轨,RSI确认超买
- 适用: 震荡市场
- 特点: 基于快慢均线交叉的趋势跟随
- 买入: 快线上穿慢线(金叉)
- 卖出: 快线下穿慢线(死叉)
- 适用: 趋势市场
- 特点: 结合超买超卖和交叉信号
- 买入: K线上穿D线且在超卖区
- 卖出: K线下穿D线且在超买区
- 适用: 短期波段操作
- 降低误判: 6种策略互相验证,减少单一策略的局限性
- 提高准确性: 通过投票机制提供更可靠的信号
- 一致性评估: 显示策略间的一致性程度
- 智能推荐: 根据一致性和置信度提供分级推荐
- 风险控制: 分歧较大时建议观望,避免高风险操作
系统使用MySQL存储分析结果:
stock_analysis_results: 分析结果主表stock_analysis_reasons: 分析原因详情stock_analysis_indicators: 技术指标数值analysis_batches: 批量分析记录batch_analysis_results: 批次关联表stock_15min_history: 15分钟K线数据highest_trading_volume: 高成交量股票列表
- 继承
BaseStrategy类 - 实现必要的方法
- 使用
@StrategyFactory.register_strategy装饰器注册
@StrategyFactory.register_strategy
class MyCustomStrategy(BaseStrategy):
def get_strategy_name(self) -> str:
return "我的自定义策略"
def get_strategy_description(self) -> str:
return "策略描述"
def calculate_indicators(self, dataframe: pd.DataFrame) -> pd.DataFrame:
# 计算技术指标
return dataframe
def generate_signal(self, dataframe: pd.DataFrame) -> AnalysisResult:
# 生成交易信号
return AnalysisResult(
signal=Signal.BUY, # or SELL, HOLD
confidence=0.8,
reasons=["信号原因1", "信号原因2"],
indicators={"指标1": 值1, "指标2": 值2},
timestamp=pd.Timestamp.now().strftime('%Y-%m-%d %H:%M:%S')
)from visualization import ChartPlotter
plotter = ChartPlotter()
fig = plotter.create_stock_analysis_chart(
ts_code='300024.SZ',
strategy_names=['ADXTrendStrategy', 'MACDStrategy'],
days=30
)
# 在浏览器中显示
from visualization import show_chart_in_browser
show_chart_in_browser(fig)- 并行处理: 批量分析支持多线程并行
- 数据库索引: 关键字段已创建适当索引
- 内存管理: 大批量处理时采用分批加载
- 策略复用: 同一股票的数据在多策略间复用
- 数据同步: 确保
highest_trading_volume和stock_15min_history表的股票代码一致 - 数据质量: 确保15分钟K线数据的完整性和准确性
- 策略风险: 技术分析策略仅供参考,不构成投资建议
- 系统资源: 大批量分析时注意CPU和内存使用
- 数据库维护: 定期清理旧数据避免表过大
-
股票代码不存在:
# 先查看可用股票 python main.py list-stocks --limit 20 # 使用显示的股票代码进行分析
-
数据不同步:
# 重新拉取数据,确保不跳过记录 python tools/fetch_15min_data.py --clear-table --limit 100 -
策略分析失败:
- 检查股票是否有足够的历史数据(至少50个数据点)
- 确认技术指标计算依赖包已正确安装
- pandas/numpy: 数据处理核心
- pymysql: MySQL数据库连接
- baostock: 股票数据获取
- talib: 技术指标计算
- plotly: 交互式图表
- openpyxl: Excel文件导出
- 6种主流技术分析策略
- 多策略综合分析系统
- 智能投票推荐机制
- 策略权重调整功能
- 实现策略回测功能
- 开发Web管理界面
- 增加实时数据支持
- 集成机器学习模型
- 添加风险管理模块
MIT License
欢迎提交Issue和Pull Request来改进项目。
如有问题或建议,请通过Issue联系。