No description
- TypeScript 83.5%
- CSS 11.2%
- Shell 3.7%
- HTML 1%
- JavaScript 0.6%
| client | ||
| packages/engine | ||
| scripts | ||
| server | ||
| videos/stock-system-intro | ||
| .gitignore | ||
| DEPLOY.md | ||
| DESIGN.md | ||
| LICENSE | ||
| package.json | ||
| README.html | ||
| README.md | ||
智研星河 InvestEd Lab
AI × 教师协同的仿真投资者教育平台。
智研星河 InvestEd Lab 面向中学、大学通识课、财经素养社团与机构投教场景,把实时行情仿真、AI 市场叙事、教师运营管理、学生交易实践和复盘评价放在同一个闭环里。它不是一个单纯的模拟炒股小游戏,而是一套可部署、可运营、可调参、可复盘的投资者教育实验室。
本项目用于金融素养与投资者教育,不提供真实证券投资建议。
平台定位
| 维度 | 设计目标 |
|---|---|
| 教学对象 | 学生、初学投资者、财经素养课程参与者 |
| 核心模式 | AI 生成市场叙事 + 教师人工干预 + 学生仿真交易 + 数据化复盘 |
| 市场环境 | 24 家虚拟公司、4 大板块、实时价格、宏观事件、财报季、新闻冲击 |
| 教学闭环 | 观察市场 → 做出决策 → 承担结果 → 记录反思 → 教师讲评 |
| 部署形态 | React/Vite 前端 + Node/Express 后端 + MySQL 持久化 + Socket.IO 实时推送 |
核心亮点
AI 市场叙事中枢
- 支持 OpenAI-compatible 与 Anthropic 风格接口。
- 可生成市场新闻、行情分析、机构行为、参数建议和教学叙事。
- 支持牛市、熊市、震荡、反弹、泡沫、危机、算法驱动等市场风格预设。
- 内置限流、队列、超时与失败兜底,AI 不可用时系统仍可运行。
教师共创驾驶舱
- 教师可以暂停或恢复行情,手动触发新闻、宏观事件和黑天鹅事件。
- 支持班级统计、学生管理、账户重置、冻结交易、角色权限与注册控制。
- 可调节波动率、情绪指数、流动性、初始资金、手续费等教学参数。
- 可开启或隐藏利好利空标签,让学生先独立判断,再由教师讲评。
仿真交易实验室
- 实时行情每秒推送,学生可观察指数、板块、个股、新闻与持仓变化。
- 模拟 A 股常见交易约束:T+1、涨跌停、手续费、持仓成本和收益曲线。
- 支持指数观察、个股详情、买卖交易、资产分析、投资日记和复盘记录。
- 引入黑天鹅、财报、政策、通胀、利率、板块轮动等市场扰动。
学习成长系统
- 投资知识问答、每日任务、成就徽章、交易比赛与预测挑战。
- 排行榜和社区动态作为辅助激励,不喧宾夺主。
- 投资日记沉淀交易理由、错误模式和复盘素材。
- 教师可将系统数据转化为课堂讨论、案例复盘和风险教育。
功能矩阵
| 模块 | 能力 |
|---|---|
| 行情与市场 | 市场指数、板块轮动、市场温度计、恐惧贪婪指数、宏观线索 |
| 交易与资产 | 买入、卖出、T+1、涨跌停、手续费、持仓、收益曲线、资产饼图 |
| AI 引擎 | 新闻生成、行情分析、机构动作、参数建议、市场风格控制 |
| 教学运营 | 学生管理、角色权限、邀请码、导入学生、班级统计、比赛管理 |
| 学习任务 | 知识问答、每日任务、价格预测、投资日记、成就徽章 |
| 风险教育 | 黑天鹅事件、市场崩盘/暴涨、流动性变化、泡沫与危机场景 |
| 实时通信 | Socket.IO 推送价格、新闻、宏观事件和系统通知 |
| 持久化 | MySQL 存储用户、交易、持仓、日记、比赛、AI 日志与配置 |
技术架构
stock-simulator/
├── client/ # React 18 + TypeScript + Vite 前端
│ └── src/
│ ├── App.tsx # 路由、认证与主应用壳
│ ├── pages/ # 行情、持仓、问答、日记、比赛、后台等页面
│ ├── hooks/ # WebSocket 与前端状态
│ └── api/ # REST API 封装
├── server/ # Express + Socket.IO 后端
│ └── src/
│ ├── index.ts # HTTP、WebSocket 与静态资源入口
│ ├── routes/ # 交易、行情、后台、任务、预测等 API
│ ├── services/ # AI 服务、邮件服务
│ ├── store/ # MySQL / 内存存储实现
│ └── middleware/ # 鉴权中间件
├── packages/engine/ # 市场仿真与教学机制引擎
│ └── src/
│ ├── market.ts # 行情主循环
│ ├── aiEngine.ts # AI 市场叙事与调控模块
│ ├── news.ts # 新闻与事件
│ ├── liquidity.ts # 流动性与订单簿
│ └── blackswan.ts # 极端事件
├── scripts/build-delivery.sh
├── DEPLOY.md
└── README.html # 交互式产品文档
快速启动
环境要求:
- Node.js >= 18
- npm >= 9
- MySQL >= 5.7 或 MariaDB >= 10.3
git clone https://www.synnovator.com/MuskZhou/Stock-Simulator.git
cd Stock-Simulator
npm install
cp server/.env.example server/.env
创建数据库:
mysql -u root -p -e "CREATE DATABASE stock_simulator CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
启动开发环境:
npm run dev
默认访问:
- 前端开发服务器:http://localhost:5173
- 后端服务:http://localhost:3000
- 管理入口:登录超级管理员账号后进入导航栏「管理」
关键配置
编辑 server/.env:
PORT=3000
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=
DB_NAME=stock_simulator
JWT_SECRET=change-this-secret-in-production
SUPERADMIN_NICKNAME=admin
SUPERADMIN_EMAIL=admin@example.com
SUPERADMIN_PASSWORD=changeme123
AI_BASE_URL=
AI_API_KEY=
AI_MODEL=claude-sonnet-4-5
AI_MAX_TOKENS=1024
AI_RATE_LIMIT=30
AI_RATE_WINDOW=600000
AI 配置说明:
AI_BASE_URL可填写 OpenAI-compatible/v1地址,或 Anthropic/v1/messages地址。AI_API_KEY为空时,系统会跳过 AI 调用并使用内置规则运行。- 上线前务必修改
JWT_SECRET与超级管理员密码。
常用命令
| 任务 | 命令 |
|---|---|
| 安装依赖 | npm install |
| 本地开发 | npm run dev |
| 构建生产包 | npm run build |
| 启动生产服务 | npm start |
| 构建交付包 | npm run build:delivery |
| 单独构建引擎 | npm -w @stock-sim/engine run build |
| 单独构建前端 | npm -w client run build |
| 单独构建后端 | npm -w server run build |
部署摘要
npm install
npm run build
npm start
生产模式下,Express 同时提供 REST API、WebSocket 和前端静态文件服务。使用 Nginx 或宝塔反向代理时,需要保留 WebSocket 升级头:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
完整部署细节见 DEPLOY.md,交互式说明见 README.html。
API 速览
| 方法 | 路径 | 用途 |
|---|---|---|
| GET | /api/stocks |
获取市场行情、指数、板块与宏观线索 |
| GET | /api/stocks/:code |
获取个股详情与历史 K 线 |
| POST | /api/trade/buy |
买入 |
| POST | /api/trade/sell |
卖出 |
| GET | /api/portfolio?userId= |
获取持仓与资产 |
| GET | /api/news |
获取新闻流 |
| GET | /api/leaderboard |
获取排行榜 |
| GET | /api/race |
获取公开排名 |
| POST | /api/user/register |
用户注册 |
| POST | /api/user/login |
用户登录 |
WebSocket 事件:
| 事件 | 方向 | 说明 |
|---|---|---|
priceUpdate |
服务端到客户端 | 实时推送股票价格 |
news |
服务端到客户端 | 推送新闻与事件 |
macroEvent |
服务端到客户端 | 推送宏观经济事件 |
适用场景
- 学校金融素养课程
- 投资者教育公开课
- 社团模拟交易活动
- 证券基础知识训练营
- 风险教育与行为金融案例课
- 校内财经竞赛与阶段性测评
合规与版权
- 本系统为教学仿真平台,不构成任何真实投资建议。
- 仓库包含专有许可声明,未经授权不得复制、分发、转售或商用部署。
- 真实部署时请按所在地区的教育、数据与隐私要求配置账号、邮件、日志与数据库权限。