股票技术指标分析工具包
Project description
AIShareTxt
专业的股票技术指标分析工具包
AIShareTxt是一个功能强大的Python股票技术指标分析工具包,提供全面的股票数据获取、技术指标计算、AI智能分析和详细报告生成功能。
✨ 主要功能
- 📊 股票数据获取 - 基于akshare,支持多数据源获取实时和历史数据
- 📈 技术指标计算 - 基于TA-Lib,支持50+种技术指标计算
- 🤖 AI智能分析 - 集成DeepSeek和智谱AI,提供智能投资建议
- 📋 详细报告生成 - 自动生成专业的股票分析报告
- 🔧 模块化设计 - 清晰的模块结构,易于扩展和定制
- ⚡ 高性能计算 - 优化的算法,支持批量处理
🚀 快速安装
环境要求
- Python 3.8+
- Windows/Linux/macOS
安装方法
# 从源码安装(推荐)
git clone https://github.com/your-repo/aishare-txt.git
cd aishare-txt
pip install -e .
# 或者直接安装依赖后使用项目
pip install -r requirements.txt
依赖说明
项目会自动安装以下核心依赖:
akshare>=1.9.0- 股票数据获取TA-Lib>=0.4.26- 技术指标计算pandas>=1.5.0- 数据处理numpy>=1.21.0- 数值计算requests>=2.28.0- HTTP请求openai>=1.0.0- AI分析(可选)zhipuai>=2.0.0- AI分析(可选)
📖 快速开始
基本使用
from AIShareTxt import StockAnalyzer
# 创建分析器实例
analyzer = StockAnalyzer()
# 分析股票(直接返回报告文本)
report = analyzer.analyze_stock("000001") # 平安银行
print(report)
使用便捷函数
from AIShareTxt import analyze_stock
# 简单分析(直接返回报告)
report = analyze_stock("000001")
print(report)
AI智能分析
from AIShareTxt.ai.client import AIClient
# 创建AI客户端(需要配置API密钥)
ai_client = AIClient(api_key="your_api_key", provider="deepseek")
# 进行AI分析
if ai_client.is_available():
advice = ai_client.analyze_investment_recommendation(
technical_report="技术分析报告内容",
stock_code="000001"
)
print(f"AI投资建议: {ai_client.get_recommendation_text(advice)}")
else:
print("AI功能不可用,请检查API配置")
技术指标计算
from AIShareTxt.indicators.technical_indicators import TechnicalIndicators
import pandas as pd
import numpy as np
# 创建技术指标计算器
ti = TechnicalIndicators()
# 准备股票数据(OHLCV格式)
data = pd.DataFrame({
'open': [100, 102, 101, 103, 104],
'high': [105, 106, 104, 107, 108],
'low': [99, 101, 100, 102, 103],
'close': [102, 101, 103, 104, 105],
'volume': [1000, 1200, 800, 1500, 900]
})
# 计算所有技术指标
indicators = ti.calculate_all_indicators(data)
# 计算单个指标
bias = ti.calculate_bias(data['close'], timeperiod=20)
ma_patterns = ti.analyze_ma_patterns(data['close'])
获取股票列表
from AIShareTxt.utils.stock_list import get_stock_list
# 获取沪深300主板成分股
stocks = get_stock_list()
print(f"获取到 {len(stocks)} 只股票")
print(stocks.head())
📁 项目结构
AIShareTxt/
├── core/ # 核心功能模块
│ ├── analyzer.py # 股票分析器(主要入口)
│ ├── data_fetcher.py # 数据获取器
│ ├── report_generator.py # 报告生成器
│ └── config.py # 配置管理
├── ai/ # AI分析模块
│ └── client.py # AI客户端
├── indicators/ # 技术指标模块
│ └── technical_indicators.py # 技术指标计算
├── utils/ # 工具模块
│ ├── utils.py # 通用工具类
│ └── stock_list.py # 股票列表工具
└── examples/ # 示例代码
└── legacy_api.py # 传统API示例
📊 支持的技术指标
趋势指标
- 移动平均线(MA5, MA10, MA20, MA60)
- 指数移动平均线(EMA5, EMA10, EMA12, EMA20, EMA26)
- 加权移动平均线(WMA10, WMA20)
- 布林带(BOLL)
动量指标
- MACD指标
- RSI相对强弱指标(RSI9, RSI14)
- KDJ随机指标
- 威廉指标(Williams %R)
- CCI商品通道指标
成交量指标
- OBV能量潮指标
- VWAP成交量加权平均价
- 量比指标
波动率指标
- ATR平均真实波幅
- 历史波动率
资金流向指标
- 主力资金净流入
- 5日资金流向趋势
- DMI动向指标(+DI, -DI, ADX)
⚙️ 配置说明
AI配置
在使用AI功能前,需要配置API密钥:
- DeepSeek配置
# 设置环境变量
export DEEPSEEK_API_KEY="your_deepseek_api_key"
- 智谱AI配置
# 在代码中配置
ai_client = AIClient(api_key="your_zhipuai_api_key", provider="zhipuai")
分析配置
可以通过配置文件调整分析参数:
from AIShareTxt.core.config import IndicatorConfig
config = IndicatorConfig()
# 调整均线周期
config.MA_PERIODS = {
'short': [5, 10, 20], # 短期均线
'medium': [60], # 中期均线
'long': [120, 250] # 长期均线
}
# 调整MACD参数
config.MACD_CONFIG = {
'fastperiod': 12,
'slowperiod': 26,
'signalperiod': 9
}
🔧 开发指南
安装开发依赖
pip install -e ".[dev]"
运行示例
cd examples
python legacy_api.py
代码风格
项目使用以下工具确保代码质量:
# 代码格式化
black AIShareTxt/
# 代码检查
flake8 AIShareTxt/
# 运行测试
pytest
📈 使用示例
完整分析流程
from AIShareTxt import StockAnalyzer
def analyze_example():
"""完整的股票分析示例"""
# 1. 创建分析器
analyzer = StockAnalyzer()
# 2. 分析指定股票
stock_code = "000001" # 平安银行
report = analyzer.analyze_stock(stock_code)
# 3. 输出分析报告
print(f"股票 {stock_code} 分析报告:")
print("=" * 60)
print(report)
# 运行示例
if __name__ == "__main__":
analyze_example()
批量分析
from AIShareTxt.utils.stock_list import get_stock_list
from AIShareTxt import StockAnalyzer
def batch_analysis():
"""批量分析示例"""
# 获取股票列表
stocks = get_stock_list()
if stocks is None:
print("无法获取股票列表")
return
# 分析前5只股票
analyzer = StockAnalyzer()
for idx, stock in stocks.head(5).iterrows():
stock_code = stock['代码']
stock_name = stock['名称']
print(f"\n分析 {stock_name} ({stock_code})...")
print("=" * 50)
try:
report = analyzer.analyze_stock(stock_code)
print(report)
except Exception as e:
print(f" 分析失败: {e}")
batch_analysis()
🤝 贡献指南
欢迎贡献代码!请遵循以下步骤:
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
📄 许可证
本项目采用木兰宽松许可证 第2版 - 查看 LICENSE 文件了解详情。
⚠️ 免责声明
本工具提供的所有信息仅供参考,不构成投资建议。投资有风险,入市需谨慎。
📞 联系方式
- 项目主页: https://github.com/your-repo/aishare-txt
- 问题反馈: https://github.com/your-repo/aishare-txt/issues
- 邮箱: aishare@example.com
🙏 致谢
感谢以下开源项目的支持:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aishare_txt-1.0.0.tar.gz
(52.3 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters