# 💎 六壬察心 - IB基本面数据抓取指南 ## 概述 六壬察心是炼妖壶系统的降魔杵专属功能,通过Interactive Brokers (IB) API获取深度基本面数据,实现对市场情绪面的精准洞察。 ## 功能特性 ### 🎯 核心功能 - **实时基本面数据**:PE/PB比率、ROE、负债权益比等关键指标 - **财务报表分析**:营收增长、EPS增长等财务健康度指标 - **分析师观点**:评级、目标价、预测数据 - **市场情绪指标**:内部持股、空头比例、社交情绪 - **多股票对比**:批量分析,可视化对比 - **数据导出**:支持CSV、Excel、JSON格式 ### 🏛️ 神器等级对应 - **🆓 炼妖壶**: 基础功能,仅展示演示数据 - **💎 降魔杵**: 完整功能,实时IB数据访问 - **👑 打神鞭**: 增强功能,高频分析和预测模型 ## 环境配置 ### 1. IB Gateway/TWS 设置 #### 安装IB Gateway 1. 下载并安装 [IB Gateway](https://www.interactivebrokers.com/en/index.php?f=16457) 2. 启动IB Gateway并登录您的账户 3. 配置API设置: - 启用API连接 - 设置端口号(推荐4002用于模拟账户) - 允许本地连接 #### API配置 ``` Socket Port: 4002 (模拟账户) / 4001 (实盘账户) Enable ActiveX and Socket Clients: ✓ Read-Only API: ✓ (推荐用于数据获取) Download open orders on connection: ✓ ``` ### 2. 环境变量配置 复制 `.env.example` 为 `.env` 并配置: ```bash # IB 连接配置 IB_HOST=127.0.0.1 IB_PORT=4002 # 4002=模拟, 4001=实盘 IB_CLIENT_ID=10 # 唯一客户端ID ``` ### 3. Python依赖安装 ```bash # 安装IB相关依赖 pip install ib-insync pandas plotly # 或使用项目依赖 pip install -r requirements.txt ``` ## 使用方法 ### 1. 命令行测试 ```bash # 测试IB连接和基本面数据抓取 python scripts/test_ib_fundamentals.py ``` ### 2. Streamlit界面 ```bash # 启动Web界面 streamlit run streamlit_app.py ``` 在界面中: 1. 选择"💎 六壬察心"标签页 2. 确保会员等级为"降魔杵"或以上 3. 使用各种功能模块 ### 3. 编程接口 ```python import asyncio from src.data.ib_fundamentals_fetcher import IBFundamentalsFetcher async def get_stock_data(): fetcher = IBFundamentalsFetcher() try: # 获取单只股票数据 aapl_data = await fetcher.get_stock_fundamentals('AAPL') print(f"AAPL PE比率: {aapl_data.pe_ratio}") # 获取多只股票数据 symbols = ['AAPL', 'MSFT', 'GOOGL'] data_dict = await fetcher.get_multiple_stocks_fundamentals(symbols) # 转换为DataFrame df = fetcher.to_dataframe(data_dict) print(df[['symbol', 'pe_ratio', 'market_cap']]) finally: await fetcher.disconnect() # 运行 asyncio.run(get_stock_data()) ``` ## 数据结构 ### FundamentalData 对象 ```python @dataclass class FundamentalData: symbol: str # 股票代码 company_name: str # 公司名称 sector: str # 行业 market_cap: float # 市值 pe_ratio: Optional[float] # PE比率 pb_ratio: Optional[float] # PB比率 roe: Optional[float] # 净资产收益率 debt_to_equity: Optional[float] # 负债权益比 revenue_growth: Optional[float] # 营收增长率 eps_growth: Optional[float] # EPS增长率 dividend_yield: Optional[float] # 股息率 analyst_rating: Optional[str] # 分析师评级 price_target: Optional[float] # 目标价 insider_ownership: Optional[float] # 内部持股比例 short_interest: Optional[float] # 空头比例 social_sentiment: Optional[float] # 社交情绪 last_updated: datetime # 最后更新时间 ``` ## 支持的市场 ### 美股 (US) - 交易所:SMART, NYSE, NASDAQ - 货币:USD - 数据类型:完整基本面数据 ### 港股 (HK) - 交易所:SEHK - 货币:HKD - 数据类型:基础基本面数据 ### 其他市场 - 根据IB数据订阅情况而定 - 部分市场可能需要额外的数据订阅 ## 故障排除 ### 常见问题 #### 1. 连接失败 ``` ❌ IB连接失败: Connection refused ``` **解决方案:** - 确保IB Gateway/TWS正在运行 - 检查端口号是否正确 - 确认API设置已启用 - 检查防火墙设置 #### 2. 数据获取失败 ``` ❌ 无法获取基本面数据 ``` **解决方案:** - 检查股票代码是否正确 - 确认市场数据订阅状态 - 验证交易时间(某些数据仅在交易时间可用) - 检查IB账户权限 #### 3. API限制 ``` ⚠️ API请求频率过高 ``` **解决方案:** - 增加请求间隔时间 - 使用批量请求减少API调用 - 检查IB API限制政策 ### 调试模式 启用详细日志: ```python import logging logging.basicConfig(level=logging.DEBUG) ``` ### 测试连接 ```bash # 快速连接测试 python -c " import asyncio from src.data.ib_fundamentals_fetcher import IBFundamentalsFetcher async def test(): fetcher = IBFundamentalsFetcher() success = await fetcher.connect() print('✅ 连接成功' if success else '❌ 连接失败') await fetcher.disconnect() asyncio.run(test()) " ``` ## 性能优化 ### 1. 连接池管理 - 复用IB连接,避免频繁连接/断开 - 使用连接池管理多个并发请求 ### 2. 数据缓存 - 缓存基本面数据,避免重复请求 - 设置合理的缓存过期时间 ### 3. 批量处理 - 使用批量API减少网络开销 - 合理控制并发请求数量 ## 扩展开发 ### 自定义数据处理 ```python class CustomFundamentalsFetcher(IBFundamentalsFetcher): async def get_custom_metrics(self, symbol: str): """自定义指标计算""" data = await self.get_stock_fundamentals(symbol) # 自定义计算 if data.pe_ratio and data.eps_growth: peg_ratio = data.pe_ratio / data.eps_growth return {'peg_ratio': peg_ratio} return {} ``` ### 数据存储 ```python async def save_to_database(data: FundamentalData): """保存到数据库""" # 实现数据库存储逻辑 pass ``` ## 注意事项 ### 1. 数据订阅 - 某些基本面数据需要额外的市场数据订阅 - 免费账户可能有数据延迟或限制 ### 2. 使用限制 - 遵守IB API使用条款 - 注意API调用频率限制 - 不要用于高频交易 ### 3. 数据准确性 - 基本面数据可能有延迟 - 建议与其他数据源交叉验证 - 注意财报发布时间对数据的影响 ## 技术支持 如有问题,请: 1. 查看日志文件获取详细错误信息 2. 运行测试脚本验证配置 3. 检查IB官方文档和API说明 4. 在项目GitHub提交Issue --- *太公心易BI系统 - 降魔杵专属功能* *版本:v1.0* *更新时间:2025-01-15*