QuantFabric架构

QuantFabric量化交易系统架构

  • QuantFabric基于Linux/C++开发,提供国内中金所、大商所、郑商所、上期所和A股量化IT基础设施的基础功能。
  • 优秀的量化交易系统拥有最快接收行情数据线路、最快数据处理与读取能力、最好的策略软件、最快的交易通道,每个环节缺一不可。
  • 基于量化交易系统通用需求,QuantFabric架构如下:
    QuantFabric.png
  • QuantFabric交易系统中XMarketCenter和XQuant之间行情数据交互使用共享内存消息队列进行IPC通信,XTrader和XQuant之间报单、撤单、订单回报交互使用共享内存消息队列进行IPC通信,XTrader与XRiskJudge的风控请求和响应使用TCP进行IPC通信。
  • XWatcher负责转发XMarketCenter、XTrader、XQuant、XRiskJudge的监控数据并监控进程组件状态以及Colo状态。
  • XServer用于转发不同Colo的交易数据以及管理XMonitor监控客户端。

    Utils通用库

  • Utils:基础工具模块,提供交易系统不同组件共用的工具模块,如配置加载模块、HPPackClient客户端、HPPackServer服务端、SQLiteManager数据库操作、Singleton单例、Logger日志、RingBuffer、LockFreeQueue无锁队列、IPCMarketQueue行情消息队列、IPCLockFreeQueue多通道内存队列、SnapShotHelper快照工具、时间戳函数、字符串工具函数、不同组件消息通信协议。

    XAPI三方库

  • XAPI:第三方库,包括SPDLog日志库、HPSocket通信框架、YAML-CPP解析库、CTP柜台API、REM柜台API、YD柜台API、ConcurrentQueue并发队列、OES柜台API。

    XMarketCenter行情组件

  • XMarketCenter:行情数据中心,适配不同Broker柜台行情API,收取行情数据;提供行情数据写入共享内存消息队列,行情数据落地,行情数据转发至XServer。

    XWatcher监控组件

  • XWatcher:Colo监控进程,转发Colo交易进程如XMarketCenter、XTrader、XRiskJuage、XQuant等消息至XServer,并提供Colo状态监控,App交易进程监控功能。

    XServer中间件

  • XServer:消息中间件,转发不同组件之间的消息数据。转发XMonitor的报单撤单请求消息到XTrader、风控控制命令消息至XRiskJudge,转发XMarketCenter行情数据、XTrader订单回报至XMonitor。管理XMonitor客户端登录用户的权限校验。

    XTrader交易组件

  • XTrader:交易网关,适配不同Broker柜台交易API,执行报单、撤单指令,管理订单回报。转发订单回报、资金信息、仓位信息至XServer。
  • XTrader目前适配CTP柜台、盛立REM柜台、易达YD柜台、宽睿OES证券现货柜台。

    XRiskJudge风控组件

  • XRiskJudge:风控系统,提供账户间风控,如流速控制、账户锁定、自成交、撤单限制检查等风控功能;加载风控参数,解析XServer转发的风控控制命令,更新风控参数,发送风控参数至XServer;接收XTrader报单、撤单请求,进行风控检查,发送风控检查结果至XTrader;接收XTrader报单回报、撤单回报,管理订单状态,Ticker交易日内累计撤单计数。

    XMonitor监控组件

  • XMonitor是QuantFabric量化交易系统的GUI监控客户端,提供行情数据展示、订单回报管理、报单、撤单、风控管理、用户权限管理等功能。
  • XMonitor采用可拖拽式插件设计,包含Market、Monitor、EventLog、OrderManager、Permission、RiskJudge六个通用功能插件,用户可以将任意插件拖离主界面作为独立窗口显示,便于多屏显示。
  • FinTechUI模块:基于Qt封装了常用功能,如可拖拽式插件架构、冻结列表格TableView、多层次HeaderView、表格模型实现XTableModel、按钮委托代理YButtonDelegate、排序过滤模型实现XSortFilterProxyModel、过滤组件FilterWidget等UI组件。
  • Market插件用于展示行情数据,如下:
    Market.png
  • EventLog插件用于展示交易系统组件的事件日志信息,并根据不同事件级别显示不同颜色,如下:
    EventLog.png
  • Monitor插件展示Colo监控指标以及App进程状态,并提供Kill和Start相关进程的功能,如下:
    Monitor.png
  • OrderManager插件用于展示账户仓位和追踪订单,并提供手动报单和撤单功能,如下:
    OrderManager.png
  • RiskJudge风控插件提供流速限制、Ticker撤单限制、订单撤单限制、账户锁定功能设置以及展示风控拦截日志,如下:
    RiskJudge.png
  • Permission权限管理插件用户设置用户插件权限如下:
    Permission.png

    XQuant策略进程

  • XQuant:策略进程,实现不同交易策略,并根据行情触发交易信号。
  • Tools

  • MarketReader:提供内存行队列行情数据导出,
  • OrerSender:提供批量报单写入Order通道内存队列功能。