TqSdk2 与 TqSdk 有哪些差别

TqSdk2 与 TqSdk 在代码编写方面几乎一样,大部分 TqSdk 上的函数和代码在 TqSdk2 上面能够直接使用,总体架构上 TqSdk2 和 TqSdk 有了不少进步.

系统整体架构

TqSdk 使用的是基于网络协作的组件设计. 如下图:

交易中继网关
交易中继网关
交易所行情
交易所行情
行情网关
Open Md Gateway
行情网关 Open Md Gateway
DIFF 协议
TqSdk
TqSdk
期货公司交易系统
CTP/FEMAS/UFX
期货公司交易系统 CTP/FEMAS/UFX
Viewer does not support full SVG 1.1

如图所示, 整个系统结构包括这些关键组件:

  • 行情网关 (Open Md Gateway) 负责提供实时行情和历史数据

  • 交易中继网关 (Open Trade Gateway) 负责连接到期货公司交易系统

  • 上面两个网关统一以 Diff 协议对下方提供服务

  • TqSdk 按照Diff协议连接到行情网关和交易中继网关, 实现行情和交易功能

这样的结构可以给用户带来一些好处:

  • TqSdk 很小, 安装也很方便, 只要简单 pip install tqsdk 即可

  • 官方专门运维行情数据库, 用户可以直接使用, 不需要自己接收和存储数据

  • 交易相关接口被大幅度简化, 不再需要处理CTP接口的复杂回调, 也不需要发起任何查询请求

  • 对于自建了交易中继网关的期货公司,用户可以直接使用而不用额外申请接入程序

TqSdk2 继承了上述这种架构,并且将交易中继网关并入了本地,因此额外提供给用户直连期货公司的选项:

期货公司交易系统
CTP/FEMAS/UFX
期货公司交易系统 CTP/FEMAS/UFX
交易所行情
交易所行情
行情网关
Open Md Gateway
行情网关 Open Md Gateway
DIFF 协议
TqSdk2
TqSdk2
Viewer does not support full SVG 1.1

在选择 TqSdk2 直连模式时:

  • 用户代码切换中继模式到直连模式下的代码,只用修改一行

  • 省去了用户交易指令传输需要经过交易中继网关流程,减少了用户交易指令到达期货公司的延迟

需要注意选择直连模式时,用户需要向期货公司申请程序化接入并且填写自己的接入信息

to do:补充 example 和期货公司程序化接入流程

同时 TqSdk2 中将 TqSdk 里的底层代码全部用 C++ 进行了重构,会在这些地方有明显改善:

  • 维持了 TqSdk 中对外接口,让用户 TqSdk 中的代码可以在大多数情况下无缝迁移到 TqSdk2

  • 有效减少了系统内交易指令运算耗时

  • 同等代码下 TqSdk2 的回测速度提升了十倍以上

其它区别

此外, 还有一些差别值得注意

  • TqSdk2 要求 Python 3.6.4 以上版本, 不支持 Python 2.x

要学习使用 TqSdk2, 推荐从 十分钟快速入门 开始