项目介绍
一款轻量级的股票投资管理工具,帮助投资者记录和跟踪中国A股市场的股票信息。支持实时价格查询、股息率计算、投资笔记记录等功能,所有数据本地存储,保护您的投资隐私。
技术栈:React + Vite + Ant Design + Zustand + Node.js + Express + SQLite
核心功能
📊 股票管理
- 智能搜索 - 支持股票代码和名称模糊搜索,覆盖全部中国A股
- 自定义名称 - 可为股票设置个性化别名,方便记忆和管理
- 持久化存储 - 使用 SQLite 数据库,数据安全可靠
💰 实时行情
- 实时价格 - 显示最新价、涨跌幅、涨跌额等关键指标
- 自动刷新 - 每 60 秒自动更新价格数据
- 手动刷新 - 支持手动刷新获取最新行情
📝 投资分析
- 股息率计算器 - 根据历史股利支付率和预期收益,计算预期股息率
- 投资笔记 - 为每支股票添加投资想法、分析报告或提醒事项
- 数据展示 - 股息率自动显示在股票卡片上,便于快速对比
技术架构
前端技术
- React 19.2.0 - 用户界面框架
- Vite 7.2.4 - 构建工具和开发服务器
- Ant Design 6.1.2 - UI 组件库
- Zustand 5.0.9 - 轻量级状态管理
- Axios 1.13.2 - HTTP 客户端
后端技术
- Node.js + Express 5.2.1 - Web 应用框架
- better-sqlite3 12.5.0 - SQLite 数据库驱动
- node-cache 5.1.2 - 内存缓存
- cors 2.8.5 - 跨域资源共享
项目结构
stockPicker/
├── client/ # 前端应用
│ ├── src/
│ │ ├── components/ # React 组件
│ │ │ ├── StockSearch.jsx
│ │ │ ├── StockList.jsx
│ │ │ ├── StockItem.jsx
│ │ │ └── DividendCalculator.jsx
│ │ ├── services/ # API 服务层
│ │ ├── stores/ # 状态管理
│ │ └── App.jsx
│ └── vite.config.js
│
├── server/ # 后端应用
│ ├── src/
│ │ ├── services/ # 业务服务
│ │ ├── db/ # 数据库模块
│ │ ├── routes/ # 路由定义
│ │ └── controllers/ # 控制器
│ ├── data/
│ │ └── a-share-list.json # A股列表数据
│ └── stocks.db # SQLite 数据库
核心实现
股息率计算
股息率是衡量股票投资回报的重要指标。项目实现了一个可视化的股息率计算器,帮助投资者评估股票的股息收益潜力。
计算公式:
平均股利支付率 = (2023年股利支付率 + 2024年股利支付率) / 2
预期每股股息 = 平均股利支付率 × 预期每股收益
预期股息率 = (预期每股股息 / 最新股价) × 100%
数据接口设计
后端提供了完整的 RESTful API:
GET /api/stocks/search- 股票搜索GET /api/stocks/prices- 获取股票价格GET /api/my-stocks- 获取我的股票列表POST /api/my-stocks- 添加股票PUT /api/my-stocks/:id/dividend- 更新股息数据GET /api/my-stocks/:id/dividend-yield- 计算预期股息率
数据来源
使用新浪财经 API 获取股票数据:
- 搜索 API:
http://suggest3.sinajs.cn/suggest/- 支持搜索全部 A 股 - 价格 API:
http://hq.sinajs.cn/list=- 获取实时行情数据
服务器端实现了 30 秒缓存机制,避免频繁请求外部 API。
快速开始
一键启动
# 安装所有依赖
npm run install:all
# 启动前后端服务
npm run dev
启动成功后:
- 后端服务器:http://localhost:3001
- 前端应用:http://localhost:5173
分别启动
# 后端
cd server && npm run dev
# 前端
cd client && npm run dev
项目特点
- 本地数据存储 - 使用 SQLite 数据库,所有数据存储在本地,保护投资隐私
- 实时行情更新 - 自动刷新机制,保持价格数据最新
- 完整的投资分析 - 支持股息率计算和投资笔记,帮助做出明智的投资决策
- 简洁的用户界面 - 使用 Ant Design 组件库,界面美观易用
- 高效的状态管理 - 使用 Zustand 进行轻量级状态管理
- 一键启动 - 简化的启动命令,支持同时启动前后端服务
注意事项
- 数据准确性 - 新浪财经 API 为免费 API,数据仅供参考,请勿用于实际交易决策
- 价格延迟 - 股票价格有延迟,不适用于高频交易
- 数据隐私 - 所有数据存储在本地 SQLite 数据库,不会上传到云端