2025-05-11 20:06:33 +08:00
2025-05-09 18:31:41 +08:00
2025-05-09 18:31:41 +08:00
2025-05-11 20:06:33 +08:00
2025-04-29 00:55:25 +08:00
2025-05-10 21:20:47 +08:00
2025-05-10 21:20:47 +08:00
2025-05-10 21:20:47 +08:00
2025-05-10 21:20:47 +08:00

Real Trader - 量化交易执行平台

Real Trader是一个量化交易执行平台专为中国A股市场设计提供接近实时的交易执行、模拟交易与实盘交易无缝切换、多策略管理等功能。

功能特点

  • 实盘与模拟交易无缝切换:根据当前交易时段和配置自动切换模拟/实盘模式
  • 多策略持仓管理:支持多个策略并行运行,独立管理各策略持仓
  • 实盘交易管理:自动处理部分成交、超时等异常情况
  • RESTful API接口提供完整的HTTP API便于各类策略接入
  • 自动交易时段判断基于中国A股交易时间自动判断当前是否在交易时间内
  • 丰富的配置选项:可通过环境变量或配置文件灵活配置
  • 完善的日志系统:详细记录交易过程和异常情况
  • 定时任务调度:支持每日定时执行任务,如保存策略数据、清理超时委托等

系统架构

  • trade_server.pyRESTful API服务器处理交易请求
  • real_trader_manager.py:实盘交易管理器,处理实盘交易异常情况
  • strategy_position_manager.py:策略持仓管理器,管理各策略持仓情况
  • xt_trader.py交易接口封装基于XtQuant接口
  • simulation_trader.py:模拟交易实现
  • logger_config.py:日志系统配置
  • config.py:系统配置管理

API接口

系统提供以下RESTful API接口

  • 健康检查: GET /yu/healthcheck
  • 买入: POST /yu/buy
  • 卖出: POST /yu/sell
  • 撤单: DELETE /yu/cancel/<entrust_no>
  • 查询余额: GET /yu/balance
  • 查询持仓: GET /yu/positions
  • 查询今日成交: GET /yu/todaytrades
  • 查询今日委托: GET /yu/todayentrust
  • 清空策略持仓: DELETE /yu/clear/<strategy_name>
  • 查询订单状态: GET /yu/order_status
  • 查询策略目标持仓: GET /yu/strategy_targets

环境要求

  • Python 3.10.5+
  • 依赖库:
    • chinese-calendar
    • flask
    • flask-limiter
    • requests
    • schedule
    • XtQuant交易接口实盘环境需要

配置项

主要配置项可通过环境变量设置:

  • PORT服务端口默认9527
  • HOST服务监听地址默认0.0.0.0
  • DEBUG调试模式默认False
  • SIMULATION_MODE是否仅使用模拟交易默认False
  • XT_ACCOUNTXtQuant账号
  • XT_PATHXtQuant路径

更多配置项请参考config.py文件。

使用示例

  1. 设置环境变量(可选)
export XT_ACCOUNT=你的账号
export XT_PATH=XtQuant安装路径
  1. 启动服务
python main.py
  1. API调用示例
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交易接口
  • 系统默认会根据交易时间自动判断是否使用模拟交易
  • 交易日判断基于chinese-calendar库
  • 请确保配置正确的交易账号和路径

design

strategy position manager

策略仓位管理是用于保存,更新基于策略名的股票仓位, 和未完成订单的 父类: BasePositionManager 子类: RealPositionManager(放入real 模块), SimulationPositionManager(放入simulation 模块) position manager 中保存两个字典, positions, pending_orders, key都是策略名 position manager在trade_server中初始化, 作为参数传入trader 完整的交易流程是:

  1. 下单 用户调用trader下单, trader在发出下单信号的同时添加一个pending_order给position manager pending_order的结构是{order_id, order_status}, 当order_status是完成状态时, 应该从字典中删除 下单没有给策略名的, 策略名默认为"default_strategy"
  2. 更新pending order状态 模拟盘立刻全部成交, 在下单后立刻更新仓位, 并删除pending order, 需要打印日志 实盘由real_trader_manager管理pending order状态, 具体是
  • 下单后立刻尝试更新pending order状态, 比如状态变为部分成交, 全部成交等, 同时更新持仓,并计划一个1分钟后的任务
  • 1分钟后再次更新订单状态, 如果全部成交, 则更新持仓, 否则(部分成交, 无成交), 撤单, 并下一个市价单数量是原先订单数量, 或者补单数量(部分成交)
  • 如果下单发生错误, 表示没有成功下单, 则不添加pending order, 也不更新仓位, 即忽略这笔订单, 打印错误日志
  1. 收盘后保存策略持仓(模拟盘, 实盘单独保存)
  2. server启动时载入持仓文件 以上设计基于简洁, 逻辑清晰, 流程简单的思路, 如果有更好的建议, 可以提供
Description
No description provided
Readme 407 MiB
Languages
Python 75.1%
Lua 24.9%