# 📈 股票数据分析工具 一个基于 Go + SQLite + 免费API的股票数据分析工具,内置网页界面。 ## 🎯 开发模式 (PERDAS 增强版) 本项目采用 **PERDAS (Permanently Executing Development Agent System)** 增强版架构进行开发。 ### 核心特点 ✅ **增量开发** - 每次只实现一个功能 ✅ **强制测试** - 所有功能必须通过端到端测试 ✅ **可追溯** - 所有修改都有 Git 历史 ✅ **状态持久化** - 会话间保持工作连贯 ### 工作流程 1. **初始化** - 运行 `init.sh` 启动环境 2. **健康检查** - 运行 `scripts/health-check.sh` 验证环境 3. **选择功能** - 查看 `feature_list.json` 了解任务 4. **开发功能** - 按照步骤实现功能 5. **端到端测试** - 运行 `scripts/e2e-test.sh` 验证 6. **截图证据** - 保存测试截图到 `tests/screenshots/` 7. **提交代码** - Git commit 并更新 `feature_list.json` ### 强约束指令 > **绝对禁止删除或修改测试用例** - ❌ 不允许删除或修改测试用例 - ❌ 不允许删除或修改其他功能的代码 - ❌ 不允许修改 `feature_list.json` 中除 `passes` 字段外的内容 - ❌ 不允许未通过端到端测试就标记完成 - ❌ 不允许未保存截图证据就标记完成 ### 开发工作流 每次会话开始时: ```bash # 1. 确认工作目录 pwd # 应该是 /root/.openclaw/workspace/stock-tool # 2. 启动开发环境 ./init.sh # 3. 验证环境健康状态 ./scripts/health-check.sh # 4. 运行端到端测试 ./scripts/e2e-test.sh # 5. 查看功能清单 cat feature_list.json # 6. 查看进度 cat PROGRESS.md ``` 每次开发完成时: ```bash # 1. 更新进度文件 vim PROGRESS.md # 2. 更新 feature_list.json(仅修改 passes 字段) jq '.features[] | select(.id=="feat-001") | .passes = true' feature_list.json > tmp.json && mv tmp.json feature_list.json # 3. Git commit git add . git commit -m "feat: 完成 feat-001 股票列表展示功能" # 4. 查看提交历史 git log --oneline -5 ``` ## 🚀 快速开始(标准模式) ### 环境要求 - Go 1.21+ - SQLite3 ### 安装依赖 ```bash cd stock-tool go mod download ``` ### 运行程序 ```bash go run main.go ``` ### 访问网页 打开浏览器访问: http://localhost:8080 ## 📊 功能特性 ### 1. 股票列表展示 - 展示所有已添加的股票 - 实时价格、涨跌幅 - 基本面指标(市值、PE、ROE、负债率) ### 2. 股票搜索 - 支持按股票代码搜索 - 支持按公司名称搜索 ### 3. 股票详情 - **K线图**:展示100天历史走势 - **技术指标**:RSI、MACD、均线系统 - **基本面数据**:收入、利润、ROE等 ### 4. 数据刷新 - 一键刷新股票数据 - 自动更新数据库 ## 🗄️ 数据库结构 ### stocks 表 ```sql CREATE TABLE stocks ( id INTEGER PRIMARY KEY AUTOINCREMENT, symbol TEXT UNIQUE, name TEXT, current_price REAL, change REAL, change_percent REAL, market_cap TEXT, pe_ratio REAL, roe REAL, debt_ratio REAL, update_time TEXT ); ``` ### klines 表 ```sql CREATE TABLE klines ( id INTEGER PRIMARY KEY AUTOINCREMENT, symbol TEXT, date TEXT, open REAL, high REAL, low REAL, close REAL, volume INTEGER, FOREIGN KEY(symbol) REFERENCES stocks(symbol) ); ``` ### indicators 表 ```sql CREATE TABLE indicators ( id INTEGER PRIMARY KEY AUTOINCREMENT, symbol TEXT, date TEXT, rsi REAL, macd REAL, macd_signal REAL, ma5 REAL, ma10 REAL, ma20 REAL, update_time TEXT, FOREIGN KEY(symbol) REFERENCES stocks(symbol) ); ``` ### financials 表 ```sql CREATE TABLE financials ( id INTEGER PRIMARY KEY AUTOINCREMENT, symbol TEXT UNIQUE, revenue REAL, profit REAL, roe REAL, debt_to_equity REAL, update_time TEXT ); ``` ## 📡 API接口 ### 获取股票列表 ``` GET /api/stocks ``` ### 获取股票详情 ``` GET /api/stock/:symbol ``` ### 获取K线数据 ``` GET /api/stock/:symbol/kline ``` ### 获取技术指标 ``` GET /api/stock/:symbol/indicators ``` ### 获取财务数据 ``` GET /api/stock/:symbol/financials ``` ### 搜索股票 ``` GET /api/search?q=关键词 ``` ### 刷新股票数据 ``` GET /api/refresh/:symbol ``` ## 🔌 支持的API ### 1. Yahoo Finance (yfinance) - **免费额度**: 无限制 - **数据**: 历史K线、实时报价、财务报表 - **使用**: 直接通过yfinance库获取 ### 2. Alpha Vantage - **免费额度**: 25次请求/天 - **数据**: 技术指标、实时数据 - **使用**: 补充技术分析数据 ### 3. Finnhub - **免费额度**: 60次请求/月 - **数据**: 基本面、新闻、经济指标 - **使用**: 财报数据分析 ## 🎯 选股策略示例 ### 技术分析选股 ```python # 筛选条件示例 1. MACD金叉(短线上穿长线) 2. RSI < 30(超卖) 3. MA5 > MA10 > MA20(多头排列) 4. 换手率 > 5% ``` ### 基本面选股 ```python # 筛选条件示例 1. ROE > 15% 2. 负债率 < 60% 3. PE < 30 4. 利润增长率 > 10% ``` ## 📝 使用建议 ### 初学者 1. 先使用模拟数据体验界面 2. 学习如何读取和展示数据 3. 理解基本的API调用 ### 进阶用户 1. 集成真实的yfinance API 2. 添加更多技术指标计算 3. 实现选股策略自动化 ### 专业用户 1. 接入真实的历史数据源 2. 添加回测功能 3. 实现实盘交易接口 ## ⚠️ 风险提示 > **股市有风险,投资需谨慎** > > 本工具仅用于技术学习和数据分析,不构成任何投资建议。 > 所有数据均为模拟数据,实际使用时请接入真实API源。 ## 🛠️ 开发计划 - [ ] 集成真实的yfinance API - [ ] 添加更多技术指标(布林带、KDJ等) - [ ] 实现选股策略自动化 - [ ] 添加回测功能 - [ ] 支持更多数据源 - [ ] 移动端适配 - [ ] 深色/浅色主题切换 ## 📄 许可证 MIT License ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! --- **开发者**: Geliebte **更新时间**: 2026-02-18