# akshare_stock_analysis **Repository Path**: rogerwangdp/akshare_stock_analysis ## Basic Information - **Project Name**: akshare_stock_analysis - **Description**: Stock analysis using akshare - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2025-03-23 - **Last Updated**: 2025-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 股票分析工具 版本: v1.3.0 作者: samwan 发布日期: 2025-03-23 ## 功能特点 - 基于技术指标的股票评分系统(总分100分) - 支持多个技术指标分析:MACD、KDJ、RSI、均线系统、成交量 - 生成详细的技术分析报告和可视化图表 - 自动保存分析结果到 `data_archive` 目录下以程序运行时的时间戳 YYYYMMDD_HHmmss 格式的子目录下 - 多线程并行处理,提高分析效率 - 支持历史数据分析,自动处理市值信息 ## 环境配置 ### 系统要求 - Python 3.8+ - Windows/Linux/macOS ### 依赖安装 ```bash pip install -r requirements.txt ``` 主要依赖包: - akshare:获取股票数据 - pandas:数据处理 - numpy:数值计算 - matplotlib:图表绘制 - mplfinance:K线图绘制 ## 评分系统说明 ### 1. MACD指标(20分) - MACD柱为正:10分 - 计算方法:MACD柱 = DIF - DEA - 判断条件:MACD柱 > 0 - DIF上穿DEA:10分 - 计算方法: - DIF = 12日EMA - 26日EMA - DEA = DIF的9日EMA - 判断条件:当日DIF > DEA且前一日DIF ≤ DEA ### 2. KDJ指标(20分) - KD值在超卖区域(<30):10分 - 计算方法: - K = 2/3 × 前一日K值 + 1/3 × RSV - D = 2/3 × 前一日D值 + 1/3 × K值 - 判断条件:K < 30且D < 30 - J值在超卖区域(<20):5分 - 计算方法:J = 3K - 2D - 判断条件:J < 20 - K线上穿D线:5分 - 判断条件:当日K > D且前一日K ≤ D ### 3. RSI指标(20分) - RSI < 30(严重超卖):20分 - RSI < 40(轻度超卖):15分 - RSI < 50(低位徘徊):10分 - 计算方法: - RSI = 100 × 上涨平均值/(上涨平均值+下跌平均值) - 默认使用14日RSI ### 4. 均线系统(20分) - 多头排列(5日>10日>20日):10分 - 计算方法:计算5日、10日、20日简单移动平均线 - 判断条件:MA5 > MA10 > MA20 - 价格站上均线: - 站上5日线:4分 - 站上10日线:3分 - 站上20日线:3分 - 判断条件:收盘价分别大于对应均线 ### 5. 成交量分析(20分) - 成交量大于5日均量:10分 - 计算方法:当日成交量与5日成交量均线比较 - 判断条件:Volume > MA5(Volume) - 连续3天成交量递增:10分 - 判断条件:V(t) > V(t-1) > V(t-2) ## 使用说明 ### 基本用法 ```bash # 命令行帮助 python stock_analyze.py -h # 分析最近30天(默天)所有股票信息,生成按得分排列的csv文件,并生成得分前10名的股票技术指标图表 # (默认行为, 也是当用鼠标双击执行程序的默认行为) python stock_analyze.py -k 10 # 分析最近60天所有股票信息,生成按得分排列的csv文件,并生成得分前10名的股票技术指标图表 python stock_analyze.py -k 10 -d 60 # 指定日期范围进行历史数据分析(注意:历史数据不包含市值信息),生成按涨幅排列的csv文件,并生成涨幅前10名的股票技术指标图表 python stock_analyze.py -k 10 --start-time 20250101 --end-time 20250315 # 使用更多线程加速分析(默认线程数是8) python stock_analyze.py -k 10 -p 16 # 分析最近30天所有股票信息,生成按涨幅排列的csv文件,并生成涨幅前10名的股票技术指标图表 python stock_analyze.py -g # 指定日期范围进行历史数据分析(注意:历史数据不包含市值信息), 生成按涨幅排列的csv文件,并生成涨幅前10名的股票技术指标图表 python stock_analyze.py -g --start-time 20250101 --end-time 20250315 # 分析指定股票(可以用逗号分隔多个股票代码,默认按得分排序) python stock_analyze.py -c 600519,000858,002714 # 分析指定多只股票并按涨幅排序(对单只股票无效) python stock_analyze.py -c 600519,000858,002714 -g # 分析指定股票的最近60天数据 python stock_analyze.py -c 600519,000858 -d 60 # 分析指定股票指定时间范围内的数据 python stock_analyze.py -c 600519,000858 --start-time 20250101 --end-time 20250315 # 把结果上传到AI服务商分析 (仅对到当前日期的数据有效,如果使用--start-date,--end-date参数,将不会上传AI分析) python stock_analyze.py -c 600519,000858 --ai ``` ### AI分析配置文件 ```toml [llm] base_url = "" # API服务接口, 比如: "https://api-inference.modelscope.cn/v1/" model = "" # 能识别图片的多模态模型,比如: Qwen-VL 系列 api_key = "" # 你的API key ``` 程序会按照以下顺序查找 config.toml 配置文件: 1. 当前工作目录 2. EXE文件所在目录(当以打包后的EXE文件运行时) 3. 程序模块所在目录 ### 输出结果说明 程序会生成以下输出: 1. csv文件,按照用户输入以得分或者涨幅排序 (多只股票) 2. 排名前K只股票的技术指标分析图表 ## 性能优化 1. 数据获取优化: - 使用多进程并行获取股票数据 - 实现数据缓存机制,避免重复请求 2. 计算优化: - 使用向量化运算代替循环 - 技术指标计算采用滑动窗口 3. 内存管理: - 及时释放不需要的数据 - 使用生成器处理大量数据 ## 常见问题 1. 数据获取失败 - 检查网络连接 - 确认API访问限制 - 尝试使用代理服务器 2. 线程数设置 - 建议设置为CPU核心数的1-2倍 - 考虑内存占用情况 - 避免设置过大导致资源竞争 3. 图表显示异常 - 检查中文字体配置 - 确认matplotlib版本兼容性 - 调整图表尺寸和DPI 4. 已知问题 - 历史数据分析模式下无法获取市值信息(将显示为'na').这是由于历史数据API限制导致,暂无解决方案 ## 更新日志 ### v1.3.0 (2024-03-23) - 新增AI分析功能,支持对技术分析图表进行智能解读 - 优化模块导入路径,解决直接运行模块时的导入问题 - 改进错误处理机制,增强程序稳定性 - 新增趋势强度指标和风险调整因子,优化评分算法 - 增加数据长度检查,确保分析结果的可靠性 - 改进实时行情数据获取逻辑,增加容错处理 - 优化多线程处理机制,提升分析效率 - 改进图表生成功能,增加更多技术指标展示 - 修复历史数据获取时的缓存处理问题 - 优化日志记录系统,增加详细错误信息 ### v1.2.0 (2025-03-19) - 重构项目结构,简化代码组织 - 将所有功能整合到单个文件 stock_analyze.py - 删除冗余的 stock_analysis.* 文件 - 优化文档结构,更新项目说明 ### v1.1.0 (2025-03-18) - 将多进程改为多线程实现,提升程序稳定性 - 修复历史数据分析中的日期处理问题 - 优化市值信息处理,明确标识历史数据无市值信息(已知限制) - 改进错误处理和日志输出 ### v1.0.0 (2025-03-17) - 首次发布 - 实现基本的技术指标分析功能 - 支持多进程并行处理 - 添加数据可视化功能 ## 分析示例 以下是使用本工具进行股票分析的实际案例(数据来源:example/20250317_204403): ### 分析结果展示 1. 永茂泰(605208) !['永茂泰'数据指标图](example/20250319_093010/605208_永茂泰_analysis.png) 2. 长白山(603099) !['长白山'数据指标图](example/20250319_093506/603099_长白山_analysis.png) 3. 宏盛股份(603090) !['宏盛股份'数据指标图](example/20250319_094447/603090_宏盛股份_analysis.png) 4. 海天精工(601882) !['海天精工'数据指标图](example/20250319_094034/601882_海天精工_analysis.png) 5. 神马股份(600810)AI分析报告(使用"Qwen/Qwen2.5-VL-7B-Instruct"模型) !['神马股份'AI分析报告](example/20250323_114746/600810_神马股份_ai_analysis.txt) 6. 更多示例,请查看 [example](example) 目录下的子目录。 每张分析图包含: - 上方:K线图与主要均线 - 中间:成交量分析 - 下方:MACD、KDJ、RSI等技术指标 ## 免责声明 1. 本程序仅供金融学习与技术研究使用,不构成任何投资建议或推荐。 2. 股市有风险,投资需谨慎。任何投资决策均应建立在投资者独立研究和判断的基础之上。 3. 本程序基于技术分析方法进行股票评分,但技术分析不能预测未来表现,不应作为投资决策的唯一依据。 4. 使用者应对自己的投资决策负责,程序开发者不对因使用本程序输出结果进行投资导致的任何损失承担责任。 5. 在使用本程序前,请务必仔细阅读并理解本免责声明的全部内容。