# stock-system **Repository Path**: friendships/stock-system ## Basic Information - **Project Name**: stock-system - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-13 - **Last Updated**: 2026-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 🎯 股票因子评分系统 一个基于多因子模型的A股智能评分系统,通过实时获取股票数据,结合技术指标、资金流向、市场热度等多个维度进行智能评分,帮助投资者快速发现优质股票。 ✨ 核心功能 📊 实时数据获取:自动从akshare获取A股实时行情、历史数据、资金流向等 🧮 智能因子计算:基于6大维度、20+因子进行综合评分 🏆 股票排名:自动计算得分并展示前10名优质股票 ⏰ 定时任务:支持开盘、盘中、尾盘等多个时段自动更新 🌐 Web界面:友好的Web界面展示股票评分和详细分析 📈 可视化图表:雷达图展示各因子表现,直观对比 💾 数据存储:使用MongoDB存储历史数据,Redis缓存热点数据 📁 项目结构 复制 stock_scoring_system/ ├── README.md # 项目说明文档 ├── requirements.txt # Python依赖包 ├── config.py # 配置文件 ├── data_fetcher.py # 数据获取模块 ├── factor_calculator.py # 因子计算模块 ├── scheduler.py # 定时任务模块 ├── web_app.py # Web服务模块 ├── templates/ # 前端模板目录 │ └── index.html # 主页面 ├── logs/ # 日志目录(自动生成) ├── .env.example # 环境变量示例 └── docker-compose.yml # Docker编排文件 🔧 安装依赖 方式一:使用pip安装 bash 复制 # 1. 克隆项目 git clone cd stock_scoring_system # 2. 安装Python依赖(推荐使用Python 3.8+) pip install -r requirements.txt 方式二:使用Docker安装 bash 复制 # 1. 使用Docker Compose一键启动 docker-compose up -d 方式三:手动安装 bash 复制 # 安装核心依赖 pip install akshare==1.12.0 pip install pymongo==4.5.0 pip install pandas==2.0.0 pip install numpy==1.24.0 pip install TA-Lib==0.4.28 pip install Flask==2.3.0 pip install schedule==1.2.0 pip install redis==5.0.0 pip install python-dotenv==1.0.0 # 安装数据库 # MongoDB # Windows: 下载MongoDB Community Server # macOS: brew install mongodb-community # Ubuntu: sudo apt-get install mongodb # Redis # Windows: 下载Redis for Windows # macOS: brew install redis # Ubuntu: sudo apt-get install redis-server 🗃️ 数据库配置 1. MongoDB配置 bash 复制 # 启动MongoDB服务 # Windows: 启动MongoDB服务 # macOS: brew services start mongodb-community # Ubuntu: sudo systemctl start mongod # 创建数据库和用户 mongo > use stock_scoring > db.createUser({ user: "stock_user", pwd: "your_password", roles: [ { role: "readWrite", db: "stock_scoring" }, { role: "dbAdmin", db: "stock_scoring" } ] }) 2. Redis配置 bash 复制 # 启动Redis服务 # Windows: 启动Redis服务 # macOS: brew services start redis # Ubuntu: sudo systemctl start redis-server 🚀 启动服务 方式一:完整启动(推荐) bash 复制 # 1. 复制环境变量文件 cp .env.example .env # 编辑.env文件,配置数据库连接信息 # 2. 创建日志目录 mkdir -p logs # 3. 首次运行,初始化数据 python web_app.py # 访问 http://localhost:5000/api/fetch_data 触发数据获取 # 或通过Web界面点击"更新实时数据" # 4. 启动定时任务(新终端) python scheduler.py 方式二:分模块启动 bash 复制 # 启动Web服务(端口5000) python web_app.py # 启动定时任务 python scheduler.py # 手动触发数据获取 curl -X POST http://localhost:5000/api/fetch_data \ -H "Content-Type: application/json" \ -d '{"data_type": "all"}' # 手动触发因子计算 curl -X POST http://localhost:5000/api/calculate_scores \ -H "Content-Type: application/json" \ -d '{"date": "20241220"}' 方式三:Docker启动 bash 复制 # 1. 构建并启动所有服务 docker-compose up -d # 2. 查看服务状态 docker-compose ps # 3. 查看日志 docker-compose logs -f web docker-compose logs -f scheduler # 4. 停止服务 docker-compose down 🌐 访问系统 Web界面 主界面:http://localhost:5000 API文档:http://localhost:5000/api 主要页面 首页:显示TOP 10评分最高的股票 股票详情:点击股票查看详细分析和因子得分 系统控制:手动触发数据更新和计算 统计信息:查看系统运行状态和数据量 📊 API接口 1. 获取TOP股票 bash 复制 GET /api/top_stocks?top_n=10&date=20241220 2. 获取股票详情 bash 复制 GET /api/stock_scores?symbol=000001&date=20241220 3. 触发数据获取 bash 复制 POST /api/fetch_data { "data_type": "realtime" # all, realtime, zt_pool, history } 4. 触发因子计算 bash 复制 POST /api/calculate_scores { "date": "20241220" } 5. 获取统计信息 bash 复制 GET /api/stats 6. 清除缓存 bash 复制 POST /api/clear_cache 📅 定时任务 系统自动执行以下任务: 时间 任务 说明 09:00 开盘前任务 清理旧数据,获取基本信息 09:30 开盘任务 获取实时数据,涨停池数据 11:30 午间任务 更新数据,计算上午得分 13:00 下午任务 更新实时数据 14:30 尾盘任务 尾盘选股,计算最终得分 15:30 收盘后任务 更新历史数据,归档当日数据 每5分钟 实时更新 交易时间实时更新数据 🧮 评分体系 因子权重分布 因子类别 权重 说明 趋势得分 15% 均线排列、趋势斜率、价格位置 量能得分 20% 成交量、量比、堆量检测 资金得分 25% 主力流入、内外盘、换手率 技术得分 20% MACD、RSI、KDJ、布林带 市场得分 10% 市值、PE、涨跌幅、振幅 风险得分 10% 波动率、高位风险、上影线 评分等级 总分 评级 建议 ≥80 ★★★★★ 极佳 强势股,重点关注 70-79 ★★★★ 优秀 优质股,积极关注 60-69 ★★★ 良好 一般股,适度关注 50-59 ★★ 一般 观望股,谨慎操作 40-49 ★ 观望 弱势股,保持观望 <40 ⚠️ 回避 风险股,避免操作 ⚙️ 配置文件 主要配置项 python 下载 复制 # config.py MONGO_CONFIG = { 'host': 'localhost', 'port': 27017, 'database': 'stock_scoring', 'username': 'stock_user', 'password': 'your_password' } REDIS_CONFIG = { 'host': 'localhost', 'port': 6379, 'db': 0 } FACTOR_WEIGHTS = { 'trend_score': 0.15, 'volume_score': 0.20, 'money_flow_score': 0.25, 'technical_score': 0.20, 'market_score': 0.10, 'risk_score': 0.10 } 环境变量 bash 复制 # .env MONGODB_URI=mongodb://stock_user:password@localhost:27017/stock_scoring REDIS_URL=redis://localhost:6379/0 FLASK_ENV=production FLASK_DEBUG=false 🔍 监控与日志 日志位置 bash 复制 logs/ ├── stock_scoring_YYYYMMDD.log # 主日志文件 ├── web.log # Web服务日志 └── scheduler.log # 定时任务日志 日志级别 INFO:正常操作记录 WARNING:警告信息 ERROR:错误信息 DEBUG:调试信息(开发环境) 🐳 Docker部署 Docker Compose配置 yaml 复制 version: '3.8' services: mongodb: image: mongo:latest container_name: stock_mongodb ports: - "27017:27017" environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: password MONGO_INITDB_DATABASE: stock_scoring volumes: - mongodb_data:/data/db restart: unless-stopped redis: image: redis:alpine container_name: stock_redis ports: - "6379:6379" volumes: - redis_data:/data restart: unless-stopped web: build: . container_name: stock_web ports: - "5000:5000" depends_on: - mongodb - redis environment: MONGODB_URI: mongodb://admin:password@mongodb:27017/stock_scoring REDIS_URL: redis://redis:6379/0 volumes: - ./logs:/app/logs restart: unless-stopped scheduler: build: . container_name: stock_scheduler command: python scheduler.py depends_on: - mongodb - redis environment: MONGODB_URI: mongodb://admin:password@mongodb:27017/stock_scoring REDIS_URL: redis://redis:6379/0 volumes: - ./logs:/app/logs restart: unless-stopped volumes: mongodb_data: redis_data: Dockerfile dockerfile 复制 FROM python:3.9-slim WORKDIR /app # 安装系统依赖 RUN apt-get update && apt-get install -y \ gcc \ g++ \ && rm -rf /var/lib/apt/lists/* # 复制依赖文件 COPY requirements.txt . # 安装Python依赖 RUN pip install --no-cache-dir -r requirements.txt # 复制应用代码 COPY . . # 创建日志目录 RUN mkdir -p logs # 暴露端口 EXPOSE 5000 # 启动命令 CMD ["python", "web_app.py"] 🧪 测试 功能测试 bash 复制 # 测试数据获取 python -c "from data_fetcher import StockDataFetcher; fetcher = StockDataFetcher(); print(fetcher.fetch_all_basic_info())" # 测试因子计算 python -c "from factor_calculator import FactorCalculator; calculator = FactorCalculator(); print(calculator.calculate_stock_score('000001'))" # 测试API接口 curl http://localhost:5000/api/stats 单元测试 bash 复制 # 运行测试套件 python -m pytest tests/ 📈 性能优化 缓存策略 Redis缓存热点数据 MongoDB索引优化 数据分页加载 并发处理 异步数据获取 批量计算优化 连接池管理 🔐 安全建议 数据库安全 使用强密码 启用认证 定期备份 网络安全 使用HTTPS 防火墙限制 API限流 数据安全 敏感信息加密 访问日志记录 定期审计 📱 移动端适配 系统支持移动端访问,自动适配不同屏幕尺寸: html 下载 复制 http://your-server-ip:5000 🔄 数据更新策略 实时数据 交易时间:每5分钟更新 非交易时间:不更新 历史数据 每天收盘后更新 保留最近60天数据 自动清理30天前数据 因子计算 尾盘时段:全面计算 盘中时段:增量计算 收盘后:最终计算 🤝 贡献指南 欢迎贡献代码!请遵循以下步骤: Fork 项目 创建功能分支 (git checkout -b feature/AmazingFeature) 提交更改 (git commit -m 'Add some AmazingFeature') 推送到分支 (git push origin feature/AmazingFeature) 开启 Pull Request 📄 许可证 本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。 📞 支持与联系 问题反馈:GitHub Issues 功能建议:GitHub Discussions 邮箱:your-email@example.com 🙏 致谢 感谢 akshare 提供数据支持 感谢所有贡献者和用户 感谢开源社区 ⚠️ 风险提示:本系统提供的股票评分仅供参考,不构成投资建议。投资有风险,入市需谨慎。