# Real Trader - 量化交易执行平台 Real Trader是一个量化交易执行平台,专为中国A股市场设计,提供接近实时的交易执行、模拟交易与实盘交易无缝切换、多策略管理等功能。 ## 功能特点 - **实盘与模拟交易无缝切换**:根据当前交易时段和配置自动切换模拟/实盘模式 - **多策略持仓管理**:支持多个策略并行运行,独立管理各策略持仓 - **实盘交易管理**:自动处理部分成交、超时等异常情况 - **RESTful API接口**:提供完整的HTTP API,便于各类策略接入 - **自动交易时段判断**:基于中国A股交易时间,自动判断当前是否在交易时间内 - **丰富的配置选项**:可通过环境变量或配置文件灵活配置 - **完善的日志系统**:详细记录交易过程和异常情况 - **定时任务调度**:支持每日定时执行任务,如登录登出交易系统、重启交易软件等 ## 系统架构 - **trade_server.py**:RESTful API服务器,处理交易请求 - **real_trader_manager.py**:实盘交易管理器,处理实盘交易异常情况 - **xt_trader.py**:交易接口封装,基于XtQuant接口 - **simulation_trader.py**:模拟交易实现 - **base_trader.py**:交易基类,定义通用交易接口和交易时间判断 - **logger_config.py**:日志系统配置 - **config.py**:系统配置管理 - **trade_constants.py**:交易常量定义 ## API接口 系统提供以下RESTful API接口: - 健康检查: `GET /yu/healthcheck` - 买入: `POST /yu/buy` - 卖出: `POST /yu/sell` - 撤单: `DELETE /yu/cancel/` - 查询余额: `GET /yu/balance` - 查询持仓: `GET /yu/positions` - 查询今日成交: `GET /yu/todaytrades` - 查询今日委托: `GET /yu/todayorders` - 清空策略持仓: `DELETE /yu/clear/` ## 环境要求 - Python 3.10.5+ - 依赖库: - chinese-calendar - flask - requests - schedule - XtQuant交易接口(实盘环境需要) ## 配置项 主要配置项可通过环境变量设置: - **PORT**:服务端口(默认:9527) - **HOST**:服务监听地址(默认:0.0.0.0) - **DEBUG**:调试模式(默认:False) - **SIMULATION_MODE**:是否仅使用模拟交易(默认:False) - **XT_ACCOUNT**:XtQuant账号 - **XT_PATH**:XtQuant路径 - **MARKET_OPEN_TIME**:市场开盘时间,用于设置自动登录 - **MARKET_CLOSE_TIME**:市场收盘时间,用于设置自动登出 - **XT_RESTART_TIME**:QMT软件重启时间 更多配置项请参考`config.py`文件。 ## 使用示例 1. 设置环境变量(可选) ```bash export XT_ACCOUNT=你的账号 export XT_PATH=XtQuant安装路径 ``` 2. 启动服务 ```bash python trade_server.py ``` 3. API调用示例 ```python import requests # 买入示例 response = requests.post('http://localhost:9527/yu/buy', json={ 'strategy_name': '策略名称', 'code': '600000', 'price': 10.5, 'amount': 100 }) print(response.json()) # 查询持仓 response = requests.get('http://localhost:9527/yu/positions') print(response.json()) ``` ## 注意事项 - 实盘交易需要配置XtQuant交易接口 - 系统默认会根据交易时间自动判断是否使用模拟交易 - 非交易时间和非交易日将无法进行实盘交易 - 系统会自动在交易日开盘前登录交易账户,收盘后登出 - 系统支持自动重连机制,定期检查交易连接状态 - 交易日判断基于BaseTrader中的静态方法 ## 设计思路 ### 交易系统初始化与管理 - 系统启动时尝试初始化交易实例,即使失败也会启动服务并定期尝试重连 - 使用调度器设置每日任务,包括交易日登录、登出和QMT软件重启 - 实盘模式下会定期检查连接状态,并在连接失败时自动尝试重连 ### 交易模式切换 - 根据配置文件中的SIMULATION_MODE决定是否使用模拟交易 - 实盘模式下会检查当前是否为交易时间,非交易时间会自动拒绝交易请求 ### 实盘交易管理 - 使用RealTraderManager管理实盘交易订单和持仓 - 买入卖出操作通过place_order统一处理,支持策略名称参数 - 系统会自动检查交易连接状态,并在API响应中提供适当的错误信息 ### 健康检查与错误处理 - 提供/yu/healthcheck接口检查交易系统连接状态 - 在API响应中包含详细的错误信息,便于客户端处理异常情况