# stock-simulator **Repository Path**: narc/stock-simulator ## Basic Information - **Project Name**: stock-simulator - **Description**: 炒股模拟器 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-29 - **Last Updated**: 2025-09-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 股票模拟交易系统 (Stock Simulator) 一个基于React + TypeScript构建的全功能股票模拟交易系统,提供可控制时间的股票交易模拟环境,让用户能够在真实的历史股价数据上练习交易策略。 ## 📚 文档资源 详细的文档请访问我们的 [WIKI](https://gitee.com/narc/stock-simulator/wikis)。 WIKI包含以下主题: - [快速开始指南](https://gitee.com/narc/stock-simulator/wikis/quick-start) - [系统架构](https://gitee.com/narc/stock-simulator/wikis/architecture) - [API文档](https://gitee.com/narc/stock-simulator/wikis/api) - [常见问题](https://gitee.com/narc/stock-simulator/wikis/faq) - [贡献指南](https://gitee.com/narc/stock-simulator/wikis/contributing) ## 🚀 项目特色 - **可控制时间系统** - 可以任意调整模拟交易的日期,体验历史行情 - **真实股价数据** - 基于真实的历史股价CSV数据进行模拟交易 - **完整交易功能** - 支持买入、卖出、持仓管理、盈亏统计 - **多种图表展示** - 提供K线图、移动平均线、成交量等多种技术分析工具 - **移动端适配** - 支持桌面端和移动端两种显示模式 - **数据持久化** - 所有交易数据保存在本地,支持页面刷新后恢复 ## 📱 功能模块 ### 1. 时间控制系统 - 灵活的时间控制,可快进、快退到任意交易日 - 自动跳过非交易日(周末、节假日) - 支持按天、周、月进行时间跳转 ### 2. 股票市场 - 显示所有可交易股票列表 - 实时显示当前模拟时间的股价信息 - 支持股票搜索和筛选功能 ### 3. 交易中心 - 直观的买入/卖出交易界面 - 实时计算手续费和交易成本 - 支持市价单交易 - 交易前资金和持仓验证 ### 4. 投资组合管理 - 账户总览:总资产、可用资金、持仓市值 - 持仓明细:显示每只股票的成本价、现价、盈亏 - 交易记录:完整的历史交易记录 - 交易统计:按股票分组的盈亏分析 ### 5. K线图表系统 - **标准K线图**: 基于recharts的高性能K线图 - **ECharts增强版**: 支持更丰富的交互功能,包括: - 点击K线查看详情 - 图表内直接交易 - 交易标记显示 - 智能时间控制 - **移动端版本**: 专为移动设备优化的全屏K线图 ## 🛠 技术栈 - **前端框架**: React 18.3.1 + TypeScript - **UI组件库**: Ant Design 5.27.1 - **图表库**: - Recharts 3.1.2 (主要图表库) - ECharts 5.6.0 + echarts-for-react (增强图表) - **样式方案**: CSS + Ant Design - **数据处理**: PapaParse (CSV解析) - **时间处理**: Day.js + Moment.js - **图标**: Ant Design Icons + Lucide React - **构建工具**: Create React App - **HTTP客户端**: Axios ## 📦 项目结构 ``` src/ ├── components/ # UI组件 │ ├── EChartsKLineChart.tsx # ECharts K线图组件 │ ├── KLineChart.tsx # 标准K线图组件 │ ├── MobileKLineChart.tsx # 移动端K线图组件 │ ├── Portfolio.tsx # 投资组合组件 │ ├── StockList.tsx # 股票列表组件 │ ├── TimeControl.tsx # 时间控制组件 │ └── TradingPanel.tsx # 交易面板组件 ├── services/ # 业务逻辑服务 │ ├── ApiService.ts # API服务,用于与后端通信 │ ├── DataService.ts # 数据服务 │ ├── TimeService.ts # 时间服务 │ └── TradingService.ts # 交易服务 ├── types/ # 类型定义 │ └── index.ts # 全局类型定义 ├── App.tsx # 主应用组件 └── index.tsx # 应用入口 ``` ## 🏗 系统架构 系统采用分层架构设计: ``` graph TB subgraph "UI组件层" A[时间控制] B[股票列表] C[交易面板] D[投资组合] E[K线图表] end subgraph "服务层" F[TimeService
时间服务] G[DataService
数据服务] H[TradingService
交易服务] end subgraph "数据层" I[CSV股价数据] J[LocalStorage
交易数据] K[外部API服务] end A --> F B --> G C --> H D --> H E --> G F --> G H --> G G --> I G --> K H --> J ``` ## 🚀 快速开始 ### 环境要求 - Node.js 16.x 或更高版本 - npm 或 yarn 包管理器 ### 安装步骤 1. **克隆项目** ```bash git clone [repository-url] cd stock-simulator ``` 2. **安装依赖** ```bash npm install # 或 yarn install ``` 3. **配置数据源** 系统支持两种数据源: - **CSV文件** (默认): 从本地CSV文件加载数据 - **API**: 从外部后端API服务加载数据 要切换数据源,请修改项目根目录下的 `.env` 文件: ```env # 设置为 'api' 使用后端API REACT_APP_DATA_SOURCE=api # API基础URL (使用API数据源时需要) # 默认: http://127.0.0.1:5000 REACT_APP_API_BASE_URL=http://127.0.0.1:5000 ``` 要使用本地CSV文件: ```env REACT_APP_DATA_SOURCE=csv ``` 4. **启动开发服务器** ```bash npm start ``` 应用将在 [http://localhost:4000](http://localhost:4000) 启动 5. **构建生产版本** ```bash npm run build ``` ### 可用脚本 - `npm start` - 启动开发服务器 (端口: 4000) - `npm test` - 运行测试 - `npm run build` - 构建生产版本 - `npm run eject` - 弹出CRA配置 (不可逆操作) ## 🎯 使用指南 ### 基本操作流程 1. **设置模拟时间** - 进入"时间控制"页面 - 选择想要开始模拟交易的日期 2. **浏览股票市场** - 进入"股票市场"页面 - 查看当前时间点的股价信息 - 点击"查看详情"可跳转到K线图 3. **执行交易** - 进入"交易中心"页面 - 选择要交易的股票 - 输入交易数量,点击买入/卖出 4. **查看投资组合** - 进入"我的账户"页面 - 查看总资产、持仓情况 - 分析交易记录和盈亏统计 5. **技术分析** - 进入"K线图表"页面 - 使用多种图表工具进行技术分析 - 可切换移动端/桌面端显示模式 ### 高级功能 ## 🔧 数据源配置 系统支持通过环境变量配置两种数据源: ### CSV数据源 (默认) - 数据从 `public/data/csv/` 目录下的本地CSV文件加载 - 无需额外的后端服务 - 适用于本地开发和测试 ### API数据源 - 数据从外部后端API服务获取 - 需要运行外部API服务 - 更适合生产环境 切换数据源的方法: 1. 打开项目根目录下的 `.env` 文件 2. 将 `REACT_APP_DATA_SOURCE` 设置为 `csv` 或 `api` 3. 如果使用API数据源,还需设置 `REACT_APP_API_BASE_URL` 为您的API端点 API数据源的 `.env` 配置示例: ```env REACT_APP_DATA_SOURCE=api REACT_APP_API_BASE_URL=http://127.0.0.1:5000 ``` CSV数据源的 `.env` 配置示例: ```env REACT_APP_DATA_SOURCE=csv ```