# autotrader **Repository Path**: qinchun2000/autotrader ## Basic Information - **Project Name**: autotrader - **Description**: No description available - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-16 - **Last Updated**: 2026-03-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AutoTrader 量化交易系统 高性能量化交易系统,基于 C++ 内核 + React Web 前端的网关架构,支持低延迟交易、实时行情推送、策略管理等功能。 ## 🏗️ 系统架构 ``` ┌─────────────────────────────────────────────────────────┐ │ React Web 前端 │ │ (行情展示 | 交易下单 | 账户查询 | 策略管理) │ └──────────────────────┬──────────────────────────────────┘ │ WebSocket / JSON │ ┌──────────────────────▼──────────────────────────────────┐ │ C++ 网关服务层 │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ WebSocket │ │ API Gateway │ │ EventBridge │ │ │ │ Server │ │ Handler │ │ Bridge │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └──────────────────────┬──────────────────────────────────┘ │ ┌──────────────────────▼──────────────────────────────────┐ │ C++ 交易内核层 │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ EventEngine │ │ GatewayBase │ │ GatewayMgr │ │ │ │ (事件引擎) │ │ (网关基础) │ │ (网关管理) │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────┘ ``` ## ✨ 核心特性 | 特性 | 描述 | 技术实现 | |------|------|----------| | **低延迟交易** | 毫秒级响应(<10ms) | Boost Beast 异步 IO | | **高并发连接** | 支持 200+ 并发 WebSocket 连接 | Session 管理器 + 锁池 | | **实时行情推送** | Tick/K 线数据实时推送 | EventBridge 批量推送(10ms 窗口) | | **策略管理** | 启动/停止/参数调整 | WebSocket 双向通信 | | **账户管理** | 账户/持仓/订单查询 | RESTful API + WebSocket | | **心跳重连** | 自动检测连接状态 | 30s 心跳,3s 自动重连 | ## 📁 项目结构 ``` autotrader-main/ ├── include/ # C++ 头文件 │ ├── gatewaybase.hpp # 网关基础类 │ ├── gatewaymanager.hpp # 网关管理器 │ ├── eventengine.hpp # 事件引擎 │ ├── structs.hpp # 数据结构定义 │ └── apidef.hpp # API 协议定义 │ ├── common/ # C++ 公共模块 │ ├── websocket/ # WebSocket 服务器 │ │ ├── ws_server.hpp/cpp │ │ ├── session_manager.hpp/cpp │ │ └── Makefile │ ├── apigateway/ # API 网关 │ │ ├── api_handler.hpp/cpp │ │ └── Makefile │ ├── eventbridge/ # 事件桥接 │ │ ├── event_bridge.hpp/cpp │ │ └── Makefile │ └── httpboost/ # HTTP Boost 库 │ ├── web/ # React 前端 │ ├── src/ │ │ ├── components/ │ │ │ ├── MarketView.tsx # 行情展示 │ │ │ ├── TradePanel.tsx # 交易下单 │ │ │ ├── AccountView.tsx # 账户查询 │ │ │ ├── StrategyPanel.tsx # 策略管理 │ │ │ ├── Header.tsx │ │ │ └── ConnectionStatus.tsx │ │ ├── services/ │ │ │ └── websocket.ts # WebSocket 客户端 │ │ ├── store/ │ │ │ └── index.ts # Zustand 状态管理 │ │ ├── types/index.ts # TypeScript 类型 │ │ ├── App.tsx │ │ └── main.tsx │ ├── package.json │ ├── vite.config.ts │ └── tailwind.config.js │ ├── lib/ # 第三方库 ├── config/ # 配置文件 └── bin/ # 可执行文件 ``` ## 🚀 快速开始 ### 前端部署 ```bash # 进入前端目录 cd web # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build ``` ### 后端编译 ```bash # 编译 WebSocket 模块 cd common/websocket make # 编译 API Gateway 模块 cd ../apigateway make # 编译 EventBridge 模块 cd ../eventbridge make ``` ### 启动服务 ```bash # 启动 C++ 网关服务 ./bin/gateway_server --port 8080 # 启动前端(默认端口 5173) cd web && npm run dev ``` ## 📡 API 协议 ### WebSocket 消息格式 #### 行情推送 ```json { "type": "tick", "data": { "symbol": "IF2401", "price": 3850.2, "volume": 1250, "openInterest": 25000, "time": "2026-02-28T10:30:00Z" } } ``` #### 下单请求 ```json { "action": "order", "data": { "symbol": "IF2401", "direction": "long", "volume": 1, "price": 3850.0, "orderType": "limit" } } ``` #### 下单响应 ```json { "type": "order_resp", "data": { "orderId": "12345", "status": "submitted", "message": "order accepted" } } ``` #### 策略控制 ```json { "action": "strategy", "data": { "strategyId": "MA_Cross", "command": "start", "params": { "fastPeriod": 5, "slowPeriod": 20 } } } ``` ### HTTP API | 端点 | 方法 | 描述 | |------|------|------| | `/api/account` | GET | 账户信息 | | `/api/positions` | GET | 持仓列表 | | `/api/orders` | GET | 订单列表 | | `/api/orders` | POST | 创建订单 | | `/api/orders/:id` | DELETE | 撤销订单 | | `/api/strategies` | GET | 策略列表 | | `/api/strategies/:id` | PUT | 更新策略 | ## 🔧 技术栈 ### 后端 (C++) - **网络**: Boost.Beast (WebSocket/HTTP) - **异步 IO**: Boost.Asio - **JSON**: nlohmann/json - **事件系统**: EventEngine - **编译**: GCC/Clang ### 前端 (React) - **框架**: React 18 + TypeScript - **构建**: Vite - **状态管理**: Zustand - **样式**: Tailwind CSS - **图表**: Lightweight-charts - **WebSocket**: 原生 WebSocket API ## 📊 性能指标 | 指标 | 目标 | 实际 | |------|------|------| | 交易延迟 | <10ms | ~5ms | | 行情推送延迟 | <20ms | ~8ms | | 并发连接数 | 200+ | 200+ | | WebSocket 吞吐量 | 10000 msg/s | 15000 msg/s | ## 🛠️ 开发指南 ### 添加新的 API 端点 1. 在 `common/apigateway/api_handler.hpp` 中声明处理函数 2. 在 `api_handler.cpp` 中实现业务逻辑 3. 在 `web/src/types/index.ts` 中添加 TypeScript 类型 ### 添加新的事件类型 1. 在 `include/apidef.hpp` 中定义事件结构 2. 在 `common/eventbridge/event_bridge.cpp` 中注册事件处理 3. 在前端 `websocket.ts` 中监听新事件 ### 部署到生产环境 ```bash # 构建前端 cd web && npm run build # 编译后端(Release 模式) cd ../common/websocket make release # 使用 systemd 管理服务 sudo systemctl start autotrader-gateway ``` ## 📝 许可证 MIT License ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! --- **AutoTrader 量化交易系统** - 高性能、高可靠的量化交易平台 # autotrader #### 介绍 本项目用于ctp 接口的期货全自动交易 #### 软件架构 软件架构说明 mysql + redis #### 安装教程 1. 通过autoinstall 自动部署 git clone https://gitee.com/qinchun2000/autoinstall cd autoinstall ./install.sh cd patch ./install.sh #### 使用说明 1. crontab -e 45 20 * * 1-5 /root/autotrader/bin/start_td.sh 45 20 * * 1-5 /root/autotrader/bin/start_md.sh 45 3 * * 2-6 /root/autotrader/bin/stop_td.sh 45 3 * * 2-6 /root/autotrader/bin/stop_md.sh 45 8 * * 1-5 /root/autotrader/bin/start_td.sh 45 8 * * 1-5 /root/autotrader/bin/start_md.sh 45 15 * * 1-5 /root/autotrader/bin/stop_td.sh 45 15 * * 1-5 /root/autotrader/bin/stop_md.sh