# AlphaQuant **Repository Path**: antor/alpha-quant ## Basic Information - **Project Name**: AlphaQuant - **Description**: A股量化交易 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-10-15 - **Last Updated**: 2025-10-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # A股量化交易系统 ## 项目概述 AlphaQuant是一个基于Spring Boot + MyBatis + MySQL的A股量化交易系统,旨在为投资者提供策略研发、回测、绩效分析的一体化解决方案。系统通过对接Tushare API获取A股市场数据,实现了经典量化策略的回测功能,并提供全面的绩效评估指标。 ## 功能特点 - **数据服务**:自动获取并存储A股行情数据,计算常用技术指标 - **策略系统**:支持多种量化交易策略,易于扩展新策略 - **回测引擎**:高精度模拟交易环境,支持多股票组合回测 - **绩效分析**:计算收益率、夏普比率、最大回撤等关键指标 - **交易成本模型**:精确模拟佣金、印花税等交易成本 ## 技术栈 - **核心框架**:Spring Boot 2.7.x - **持久层**:MyBatis 3.x - **数据库**:MySQL 8.0+ - **API客户端**:OkHttp 4.x - **JSON处理**:Jackson - **科学计算**:Apache Commons Math - **日志框架**:SLF4J + Logback ## 系统架构 1. **表现层**:未来可扩展Web接口和前端界面 2. **应用服务层**: - 回测服务:负责执行回测流程 - 数据服务:处理数据获取和指标计算 - 策略服务:管理和执行交易策略 3. **数据访问层**:MyBatis Mapper接口和XML映射文件 4. **数据存储层**:MySQL数据库 5. **外部接口**:Tushare API数据接口 ## 环境要求 - JDK 11 或更高版本 - MySQL 8.0 或更高版本 - Maven 3.6+ (构建工具) - Tushare API账号及Token ## 安装部署 ### 1. 准备工作 1. 注册Tushare账号并获取API Token - 注册地址:https://tushare.pro/register - 完成认证后获取Token 2. 创建MySQL数据库 ```sql CREATE DATABASE quant_trading CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ### 2. 配置修改 修改`src/main/resources/application.properties`文件: ```properties # 数据库配置 spring.datasource.url=jdbc:mysql://localhost:3306/quant_trading?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true spring.datasource.username=your_username # 替换为你的MySQL用户名 spring.datasource.password=your_password # 替换为你的MySQL密码 # Tushare API配置 tushare.token=your_tushare_token # 替换为你的Tushare Token ``` ### 3. 构建与运行 ```bash # 构建项目 mvn clean package # 运行应用 java -jar target/quant-trading-0.0.1-SNAPSHOT.jar ``` ## 使用说明 系统启动后会自动执行预设的回测任务,包括: - 均线交叉策略回测 - RSI策略回测 回测结果会输出到控制台,包括: - 总收益率 - 年化收益率 - 夏普比率 - 最大回撤 - 交易次数和胜率 ### 自定义回测 修改`AshareQuantApplication.java`中的`run`方法: ```java // 自定义测试股票列表 List testStocks = Arrays.asList( "600036.SH", // 招商银行 "601318.SH" // 中国平安 ); // 自定义回测时间范围 LocalDate startDate = LocalDate.of(2021, 1, 1); LocalDate endDate = LocalDate.of(2023, 12, 31); // 执行自定义参数的均线策略回测 backtestService.runMaCrossStrategy(testStocks, startDate, endDate, 1000000.0, 5, 20, 0.9); ``` ## 项目结构 ``` src/main/java/com/quant/ ├── QuantApplication.java // 应用入口 ├── config/ // 配置类 │ ├── TradingCostConfig.java // 交易成本配置 │ └── TushareConfig.java // Tushare API配置 ├── entity/ // 实体类 │ ├── StockDaily.java // 股票日线数据实体 │ ├── TradeRecord.java // 交易记录实体 │ └── BacktestResult.java // 回测结果实体 ├── mapper/ // MyBatis Mapper接口 │ └── StockDailyMapper.java // 股票日线数据访问接口 ├── service/ // 服务类 │ ├── DataService.java // 数据服务 │ ├── BacktestService.java // 回测服务 │ └── impl/ // 服务实现 ├── strategy/ // 策略相关 │ ├── Strategy.java // 策略接口 │ ├── MACrossStrategy.java // 均线交叉策略 │ └── RSIStrategy.java // RSI策略 └── util/ // 工具类 ├── DateUtils.java // 日期工具 └── HttpUtils.java // HTTP工具 src/main/resources/ ├── application.properties // 应用配置 └── mybatis/ // MyBatis配置 └── mappers/ // MyBatis映射文件 └── StockDailyMapper.xml // 股票日线数据映射文件 ``` ## 扩展指南 ### 添加新策略 1. 创建策略类实现`Strategy`接口: ```java public class NewStrategy implements Strategy { // 实现接口方法 @Override public int generateSignal(List data, int index) { // 实现自定义策略逻辑 return 0; // 1:买入, -1:卖出, 0:无操作 } // 添加策略参数和初始化方法 } ``` 2. 在Spring配置中注册策略Bean 3. 在`BacktestService`中添加回测方法 ### 增加技术指标 1. 在`DataService`中实现新指标的计算方法 2. 更新`StockDaily`实体类添加指标字段 3. 修改`StockDailyMapper.xml`更新数据库表结构 4. 在策略中使用新指标 ## 注意事项 1. 系统使用的Tushare API有调用频率和数据权限限制,建议根据需求选择合适的会员等级 2. 历史数据初始化可能需要较长时间,取决于选择的股票数量和时间范围 3. 量化策略的历史表现不代表未来收益,实盘交易需谨慎 4. 实盘交易前请充分测试策略,并确保符合相关法律法规 ## 页面详情 ![image.png](assets/image.png) ![image.png](assets/image1.png) ![image.png](assets/image2.png) ![image.png](assets/image3.png) ![image.png](assets/image4.png) ## 许可证 本项目采用MIT许可证 - 详情参见LICENSE文件 ## 联系方式 如有问题或建议,请联系:lulongji2011@163.com