# stock-analyzer **Repository Path**: lydqc/stock-analyzer ## Basic Information - **Project Name**: stock-analyzer - **Description**: 金融分析,股票分析,量化交易,龙头战法 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-06 - **Last Updated**: 2026-08-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # StockWise - 智能选股系统 A 股量化选股与模拟交易系统,以**龙头战法**为核心,扩展**趋势战法**、**量能战法**,覆盖选股→信号→交易→复盘全流程。 ## 技术架构 ``` ┌─────────────────────────────────────────────────┐ │ 前端 React 19 + Vite + TypeScript + Tailwind │ │ ECharts 图表 · 端口 5173 │ ├─────────────────────────────────────────────────┤ │ Node.js Express 5 后端 (server/) 端口 8000 │ │ 涨停数据 · 龙头识别 · 情绪周期 · 模拟交易 │ ├─────────────────────────────────────────────────┤ │ Python FastAPI 后端 (backend/) 端口 8000 │ │ 行情数据 · K线 · 技术指标 (akshare) │ ├─────────────────────────────────────────────────┤ │ MySQL 8.0 + Redis · 东方财富 / 新浪 数据源 │ └─────────────────────────────────────────────────┘ ``` ## 功能模块 ### 前端页面 | 页面 | 路由 | 功能 | |---|---|---| | 首页 | `/` | 股票搜索、AI 技术分析、行业/概念板块 | | 龙头战法 | `/market` | 涨停列表、连板天梯、龙头识别、买卖信号、异常监控 | | 趋势战法 | `/trend` | MA5>MA20>MA60 多头排列全市场扫描 | | 每日复盘 | `/reviews` | 复盘记录管理、自动生成复盘报告 | | 个股详情 | `/stock/:code` | K线/分时图、策略回测、资讯、NeoData 研报 | | 模拟交易 | `/trading` | 持仓管理、手动下单、自定义策略、自动交易 | ### 策略引擎(前端 `src/engine/`) 7 种内置策略 + 多因子评分 + 完整回测引擎: - 动量突破、均线金叉、RSI 超卖反弹、放量突破、布林带反转、MACD 背离、多因子选股 - 回测含收益率、最大回撤、夏普比率、胜率、权益曲线 ### 后端核心(`server/trading/`) | 模块 | 说明 | |---|---| | 情绪周期引擎 | 主升/震荡/退潮/冰点/混沌 五阶段判定 | | 龙头识别 | 8 维评分筛选唯一真龙、空间龙、情绪龙、周期龙、换手龙、断板龙 | | 买点信号 | 7 大买点:二板分歧转一致、首阴反包、烂板弱转强、分歧回封等 | | 自动交易 | 龙头战法自动交易引擎,含止损止盈、均线卖出 | | 异动检测 | 10 类异动:炸板回封、巨量换手、巨单封板、尾盘偷袭等 | | 多策略回测 | 8 种策略对比,生成 HTML 报告 | ## 快速开始 ### 环境要求 - Node.js 18+ - Python 3.10+ - MySQL 8.0 - Redis ### 1. 安装依赖 ```bash # 前端 npm install # Node.js 后端 cd server && npm install # Python 后端 pip install fastapi uvicorn akshare ``` ### 2. 启动数据库 ```bash brew services start mysql@8.0 redis-server ``` ### 3. 启动 Python 后端 ```bash cd backend python main.py # → http://localhost:8000 ``` ### 4. 启动 Node.js 后端 ```bash cd server node index.js # → http://localhost:8000 (与 Python 共用端口,按需启停) ``` ### 5. 启动前端 ```bash npm run dev # → http://localhost:5173 ``` ## 部署方式 ### 方式一:本地 Docker 部署 ```bash # 1. 构建前端 npm run build # 2. 启动 MySQL + Redis docker run -d --name stockwise-mysql \ -e MYSQL_ROOT_PASSWORD=stockwise123 \ -e MYSQL_DATABASE=stockwise \ -p 3306:3306 mysql:8.0 docker run -d --name stockwise-redis -p 6379:6379 redis:7 # 3. 配置环境变量 cp .env.example .env # 编辑 .env 填入实际配置 # 4. 启动 Node.js 后端(生产模式) cd server && npm install && node index.js # 5. 启动 Python 后端 cd backend && pip install -r requirements.txt && python main.py # 6. 前端用 Nginx 部署 dist/ 目录 # 配置反向代理 /api → localhost:8000 ``` ### 方式二:宝塔面板部署 1. **上传代码**:将项目上传到服务器 `/www/wwwroot/stockwise/` 2. **安装依赖**:Node.js 18+、Python 3.10+、MySQL 8.0、Redis 3. **数据库**:宝塔 → 数据库 → 新建 `stockwise` 库,导入初始表结构(自动建表) 4. **Python 后端**:宝塔 → Python 项目管理器 → 添加项目,启动文件 `backend/main.py`,端口 8000 5. **Node.js 后端**:宝塔 → 网站 → Node 项目 → 添加,启动文件 `server/index.js`,端口 8001 6. **前端**: ```bash npm install && npm run build ``` 宝塔 → 网站 → 新建静态站点,目录指向 `dist/`,配置反向代理: ``` location /api/ { proxy_pass http://127.0.0.1:8001/; } ``` ### 方式三:Vercel / EdgeOne Pages(仅前端) 仅部署前端静态页面,后端需单独部署: ```bash npm run build # 将 dist/ 部署到 Vercel 或 EdgeOne Pages # API 地址通过 VITE_API_BASE 环境变量指定后端地址 ``` ### 环境变量清单 | 变量 | 说明 | 默认值 | |---|---|---| | `DB_HOST` | MySQL 地址 | 127.0.0.1 | | `DB_PORT` | MySQL 端口 | 3306 | | `DB_USER` | MySQL 用户名 | root | | `DB_PASSWORD` | MySQL 密码 | - | | `DB_NAME` | 数据库名 | stockwise | | `JWT_SECRET` | JWT 签名密钥 | - | | `AUTO_TRADE_ENABLED` | 自动交易开关 | false | | `IFIND_REFRESH_TOKEN` | 同花顺 Token(可选) | - | | `PORT` | Node.js 后端端口 | 8000 | ## 项目结构 ``` stock-analyzer/ ├── src/ # 前端源码 │ ├── api/index.ts # API 接口封装 + 类型定义 │ ├── engine/ # 策略引擎(纯函数) │ │ ├── types.ts # 核心类型定义 │ │ └── strategyEngine.ts # 技术指标 + 7策略 + 回测 │ ├── components/ # 通用组件 │ │ ├── Layout.tsx # 全局布局 + 导航 + 数据源切换 │ │ ├── KLineChart.tsx # K线图 (ECharts) │ │ ├── IntradayChart.tsx # 分时图 │ │ ├── EquityCurveChart.tsx # 收益曲线 │ │ ├── TradeButtons.tsx # 快速交易按钮 │ │ └── TradeModal.tsx # 完整交易弹窗 │ ├── pages/ # 页面组件(6个) │ ├── hooks/useIntraday.ts # 分时数据轮询 │ └── utils/tradingTime.ts # 交易时段工具 ├── server/ # Node.js 后端 │ ├── index.js # 主服务(30+ API + 缓存 + 调度器) │ ├── datasource/ # 多数据源(东财/同花顺/NeoData) │ ├── trading/ # 交易核心(18个模块) │ │ ├── autotrade.js # 自动交易引擎 │ │ ├── dragon-finder.js # 龙头识别 │ │ ├── sentiment-engine.js # 情绪周期 │ │ ├── entry-signals.js # 买卖信号 │ │ ├── anomaly-detector.js # 异动检测 │ │ ├── backtest.js # 回测引擎 │ │ └── review.js # 每日复盘 │ └── scripts/ # 数据同步脚本 ├── backend/ # Python 后端 │ ├── main.py # FastAPI 路由 │ └── data_service.py # akshare 数据 + 技术指标 └── 配置文件 ├── vite.config.ts # Vite 代理 /api → :8000 ├── tailwind.config.js # 暗色股票主题 └── tsconfig.json # TypeScript 配置 ``` ## 配置说明 ### 数据源 - **默认**: 东方财富 push2(免费,主力数据源) - **兜底**: 新浪 API(K线数据) - **VIP**: 同花顺 iFinD(需 Token,当前已过期) - 前端 Header 可切换数据源,状态持久化到 localStorage ### 自动交易 ```bash # 默认关闭,需显式开启 export AUTO_TRADE_ENABLED=true ``` ### 数据库 ``` MySQL: 127.0.0.1:3306 / root / stockwise123 / stockwise ``` ### 模拟交易规则 - 初始资金:100,000 - 佣金:万 2.5 - 印花税:千 1(卖出) - T+1 交易制度 - 涨跌停限制