update readme

This commit is contained in:
zhiyong 2025-05-11 22:35:50 +08:00
parent f29f22e3cb
commit bb76f3c239

View File

@ -11,17 +11,18 @@ Real Trader是一个量化交易执行平台专为中国A股市场设计
- **自动交易时段判断**基于中国A股交易时间自动判断当前是否在交易时间内 - **自动交易时段判断**基于中国A股交易时间自动判断当前是否在交易时间内
- **丰富的配置选项**:可通过环境变量或配置文件灵活配置 - **丰富的配置选项**:可通过环境变量或配置文件灵活配置
- **完善的日志系统**:详细记录交易过程和异常情况 - **完善的日志系统**:详细记录交易过程和异常情况
- **定时任务调度**:支持每日定时执行任务,如保存策略数据、清理超时委托 - **定时任务调度**:支持每日定时执行任务,如登录登出交易系统、重启交易软件
## 系统架构 ## 系统架构
- **trade_server.py**RESTful API服务器处理交易请求 - **trade_server.py**RESTful API服务器处理交易请求
- **real_trader_manager.py**:实盘交易管理器,处理实盘交易异常情况 - **real_trader_manager.py**:实盘交易管理器,处理实盘交易异常情况
- **strategy_position_manager.py**:策略持仓管理器,管理各策略持仓情况
- **xt_trader.py**交易接口封装基于XtQuant接口 - **xt_trader.py**交易接口封装基于XtQuant接口
- **simulation_trader.py**:模拟交易实现 - **simulation_trader.py**:模拟交易实现
- **base_trader.py**:交易基类,定义通用交易接口和交易时间判断
- **logger_config.py**:日志系统配置 - **logger_config.py**:日志系统配置
- **config.py**:系统配置管理 - **config.py**:系统配置管理
- **trade_constants.py**:交易常量定义
## API接口 ## API接口
@ -30,14 +31,12 @@ Real Trader是一个量化交易执行平台专为中国A股市场设计
- 健康检查: `GET /yu/healthcheck` - 健康检查: `GET /yu/healthcheck`
- 买入: `POST /yu/buy` - 买入: `POST /yu/buy`
- 卖出: `POST /yu/sell` - 卖出: `POST /yu/sell`
- 撤单: `DELETE /yu/cancel/<entrust_no>` - 撤单: `DELETE /yu/cancel/<order_id>`
- 查询余额: `GET /yu/balance` - 查询余额: `GET /yu/balance`
- 查询持仓: `GET /yu/positions` - 查询持仓: `GET /yu/positions`
- 查询今日成交: `GET /yu/todaytrades` - 查询今日成交: `GET /yu/todaytrades`
- 查询今日委托: `GET /yu/todayentrust` - 查询今日委托: `GET /yu/todayorders`
- 清空策略持仓: `DELETE /yu/clear/<strategy_name>` - 清空策略持仓: `DELETE /yu/clear/<strategy_name>`
- 查询订单状态: `GET /yu/order_status`
- 查询策略目标持仓: `GET /yu/strategy_targets`
## 环境要求 ## 环境要求
@ -45,7 +44,6 @@ Real Trader是一个量化交易执行平台专为中国A股市场设计
- 依赖库: - 依赖库:
- chinese-calendar - chinese-calendar
- flask - flask
- flask-limiter
- requests - requests
- schedule - schedule
- XtQuant交易接口实盘环境需要 - XtQuant交易接口实盘环境需要
@ -60,6 +58,9 @@ Real Trader是一个量化交易执行平台专为中国A股市场设计
- **SIMULATION_MODE**是否仅使用模拟交易默认False - **SIMULATION_MODE**是否仅使用模拟交易默认False
- **XT_ACCOUNT**XtQuant账号 - **XT_ACCOUNT**XtQuant账号
- **XT_PATH**XtQuant路径 - **XT_PATH**XtQuant路径
- **MARKET_OPEN_TIME**:市场开盘时间,用于设置自动登录
- **MARKET_CLOSE_TIME**:市场收盘时间,用于设置自动登出
- **XT_RESTART_TIME**QMT软件重启时间
更多配置项请参考`config.py`文件。 更多配置项请参考`config.py`文件。
@ -73,7 +74,7 @@ export XT_PATH=XtQuant安装路径
2. 启动服务 2. 启动服务
```bash ```bash
python main.py python trade_server.py
``` ```
3. API调用示例 3. API调用示例
@ -98,28 +99,27 @@ print(response.json())
- 实盘交易需要配置XtQuant交易接口 - 实盘交易需要配置XtQuant交易接口
- 系统默认会根据交易时间自动判断是否使用模拟交易 - 系统默认会根据交易时间自动判断是否使用模拟交易
- 交易日判断基于chinese-calendar库 - 非交易时间和非交易日将无法进行实盘交易
- 请确保配置正确的交易账号和路径 - 系统会自动在交易日开盘前登录交易账户,收盘后登出
- 系统支持自动重连机制,定期检查交易连接状态
- 交易日判断基于BaseTrader中的静态方法
## design ## 设计思路
### strategy position manager ### 交易系统初始化与管理
策略仓位管理是用于保存,更新基于策略名的股票仓位, 和未完成订单的 - 系统启动时尝试初始化交易实例,即使失败也会启动服务并定期尝试重连
父类: BasePositionManager - 使用调度器设置每日任务包括交易日登录、登出和QMT软件重启
子类: RealPositionManager(放入real 模块), SimulationPositionManager(放入simulation 模块) - 实盘模式下会定期检查连接状态,并在连接失败时自动尝试重连
position manager 中保存两个字典, positions, pending_orders, key都是策略名
position manager在trade_server中初始化, 作为参数传入trader ### 交易模式切换
完整的交易流程是: - 根据配置文件中的SIMULATION_MODE决定是否使用模拟交易
1. 下单 - 实盘模式下会检查当前是否为交易时间,非交易时间会自动拒绝交易请求
用户调用trader下单, trader在发出下单信号的同时添加一个pending_order给position manager
pending_order的结构是{order_id, order_status}, 当order_status是完成状态时, 应该从字典中删除 ### 实盘交易管理
下单没有给策略名的, 策略名默认为"default_strategy" - 使用RealTraderManager管理实盘交易订单和持仓
2. 更新pending order状态 - 买入卖出操作通过place_order统一处理支持策略名称参数
模拟盘立刻全部成交, 在下单后立刻更新仓位, 并删除pending order, 需要打印日志 - 系统会自动检查交易连接状态并在API响应中提供适当的错误信息
实盘由real_trader_manager管理pending order状态, 具体是
- 下单后立刻尝试更新pending order状态, 比如状态变为部分成交, 全部成交等, 同时更新持仓,并计划一个1分钟后的任务 ### 健康检查与错误处理
- 1分钟后再次更新订单状态, 如果全部成交, 则更新持仓, 否则(部分成交, 无成交), 撤单, 并下一个市价单数量是原先订单数量, 或者补单数量(部分成交) - 提供/yu/healthcheck接口检查交易系统连接状态
- 如果下单发生错误, 表示没有成功下单, 则不添加pending order, 也不更新仓位, 即忽略这笔订单, 打印错误日志 - 在API响应中包含详细的错误信息便于客户端处理异常情况
3. 收盘后保存策略持仓(模拟盘, 实盘单独保存)
4. server启动时载入持仓文件
以上设计基于简洁, 逻辑清晰, 流程简单的思路, 如果有更好的建议, 可以提供