# ChatBI助手 **Repository Path**: fcwangluo/chat-bi-assistant ## Basic Information - **Project Name**: ChatBI助手 - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-07 - **Last Updated**: 2026-05-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ChatBI股票查询助手 基于通义千问大模型的智能股票查询与分析助手,支持股票数据查询、趋势预测、异常检测等功能。 ## 功能特性 ### 1. 股票数据查询 (exc_sql) - 查询5只股票的完整历史数据 - 支持按时间范围筛选 - 支持涨跌幅统计 - 支持多股票对比分析 ### 2. ARIMA价格预测 (arima_stock) - 使用时间序列ARIMA模型预测未来价格走势 - 自动选择最优参数 (p, d, q) - 输出95%置信区间 - 生成可视化图表 ### 3. XGBoost价格预测 (xgboost_stock) - 使用机器学习XGBoost模型预测未来价格 - 基于60天历史数据训练 - 支持多种技术指标特征 - 输出特征重要性排名 - 生成可视化图表 ### 4. 布林带异常检测 (boll_detection) - 使用布林带(Bollinger Bands)检测超买超卖信号 - 默认20日周期,2倍标准差 - 支持自定义检测范围 - 生成带标注的可视化图表 ## 支持的股票 | 股票名称 | 股票代码 | |---------|----------| | 贵州茅台 | 600519.SH | | 五粮液 | 000858.SZ | | 广发证券 | 000776.SZ | | 中芯国际 | 688981.SH | | 兆易创新 | 603986.SH | ## 项目结构 ``` ChatBI助手/ ├── stock_query_assistant-5.py # 主程序 (最新版本) ├── stock_history.db # SQLite数据库 (股票历史数据) ├── faq.txt # FAQ问答模板 ├── image_show/ # 生成的图表目录 │ ├── arima_pred_*.png # ARIMA预测图表 │ ├── xgboost_pred_*.png # XGBoost预测图表 │ └── boll_*.png # 布林带检测图表 └── README.md # 项目说明文档 ``` ## 安装依赖 ```bash # 核心依赖 pip install dashscope qwen-agent pandas matplotlib # 数据分析 pip install numpy scikit-learn # 时间序列预测 pip install statsmodels # 机器学习预测 pip install xgboost ``` ## 快速开始 ### GUI模式 ```bash cd "d:/AI学习/实战/ChatBI助手" python stock_query_assistant-5.py ``` ### 终端模式 (TUI) ```bash cd "d:/AI学习/实战/ChatBI助手" python stock_query_assistant-5.py --tui ``` ## 使用示例 ### 1. 查询股票历史数据 ``` 查询贵州茅台2025年的股价走势 ``` ### 2. 对比两只股票 ``` 对比五粮液和中芯国际最近一个月的收盘价 ``` ### 3. ARIMA价格预测 ``` 用ARIMA预测中芯国际未来7天的股价 ``` ### 4. XGBoost价格预测 ``` 用XGBoost预测兆易创新未来7天的股价 ``` ### 5. 布林带异常检测 ``` 检测贵州茅台最近一年的超买超卖点 ``` ### 6. 自定义参数检测 ``` 用20日布林带检测兆易创新的超买超卖点,范围2025-01-01至2026-01-01 ``` ## 工具参数说明 ### exc_sql | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | sql | string | ✓ | SQL查询语句 | ### arima_stock | 参数 | 类型 | 必填 | 默认值 | 说明 | |------|------|------|--------|------| | ts_code | string | ✓ | - | 股票代码 | | n | integer | ✗ | 7 | 预测天数 | ### xgboost_stock | 参数 | 类型 | 必填 | 默认值 | 说明 | |------|------|------|--------|------| | ts_code | string | ✓ | - | 股票代码 | | n | integer | ✗ | 7 | 预测天数 | | lookback | integer | ✗ | 60 | 回看窗口期 | ### boll_detection | 参数 | 类型 | 必填 | 默认值 | 说明 | |------|------|------|--------|------| | ts_code | string | ✓ | - | 股票代码 | | period | integer | ✗ | 20 | 布林带周期(日) | | std | integer | ✗ | 2 | 标准差倍数 | | start_date | string | ✗ | 1年前 | 开始日期 | | end_date | string | ✗ | 今天 | 结束日期 | ## 模型参数配置 ### ARIMA模型 - **自动参数选择**: 通过AIC准则自动搜索最优(p, d, q)参数 - **搜索范围**: p ∈ [0,3], d=1, q ∈ [0,3] - **置信区间**: 95% ### XGBoost模型 | 参数 | 默认值 | 说明 | |------|--------|------| | n_estimators | 400 | 树的数量 | | max_depth | 8 | 树的最大深度 | | learning_rate | 0.08 | 学习率 | | reg_alpha | 0.01 | L1正则化 | | reg_lambda | 0.5 | L2正则化 | ### 布林带参数 | 参数 | 默认值 | 说明 | |------|--------|------| | period | 20 | 移动平均周期 | | std_mult | 2 | 标准差倍数 | | 中轨 | MA(20) | 20日移动平均线 | | 上轨 | MA(20) + 2σ | 超买线 | | 下轨 | MA(20) - 2σ | 超卖线 | ## 数据库结构 ```sql CREATE TABLE stock_history ( id INTEGER PRIMARY KEY AUTOINCREMENT, trade_date TEXT NOT NULL, -- 交易日期 (格式: YYYY-MM-DD) stock_code TEXT NOT NULL, -- 股票代码 stock_name TEXT NOT NULL, -- 股票名称 open REAL, -- 开盘价 high REAL, -- 最高价 low REAL, -- 最低价 close REAL, -- 收盘价 volume REAL, -- 成交量 amount REAL -- 成交额 ); ``` ## 版本历史 ### v5.0 (stock_query_assistant-5.py) - 新增XGBoost价格预测功能 - ARIMA模型增加自动参数选择 - 优化预测图表可视化 - 支持置信区间展示 ### v4.0 (stock_query_assistant-4.py) - 新增布林带异常检测功能 - 支持自定义检测范围 - 生成带标注的可视化图表 ### v3.0 (stock_query_assistant-3.py) - 新增ARIMA价格预测功能 - 支持可视化图表输出 - 95%置信区间 ### v2.0 (stock_query_assistant-2.py) - 新增SQL查询功能 - 支持多股票对比 - 涨跌幅统计 ### v1.0 (stock_query_assistant.py) - 基础股票查询功能 ## 注意事项 ### 模型局限性 1. **ARIMA/XGBoost都是基于历史数据的统计模型**,无法预测突发事件或政策影响 2. **股票预测本质上具有不确定性**,实际价格可能与预测存在偏差 3. **短期预测通常比长期预测更准确**,建议关注置信区间 4. **布林带是辅助工具**,超买/超卖信号仅供参考,不构成投资建议 ### 数据更新 - 数据库中的历史数据需要定期更新 - 可使用 `get_stock_history.py` 获取最新数据 ### API配置 - 需要配置 `DASHSCOPE_API_KEY` 环境变量 - 可在代码中直接设置或使用 `.env` 文件 ## 技术栈 - **LLM**: 通义千问 (Dashscope / Qwen) - **数据分析**: Pandas, NumPy - **可视化**: Matplotlib - **时序分析**: StatsModels (ARIMA) - **机器学习**: XGBoost, Scikit-learn - **数据库**: SQLite ## 许可证 MIT License ## 作者 ChatBI股票查询助手 ## 联系方式 如有问题或建议,请提交Issue。