.. _for_tqsdk1_user: TqSdk2 与 TqSdk 有哪些差别 ================================================= TqSdk2 与 TqSdk 在代码编写方面几乎一样,大部分 TqSdk 上的函数和代码在 TqSdk2 上面能够直接使用,总体架构上 TqSdk2 和 TqSdk 有了不少进步. 系统整体架构 ------------------------------------------------- TqSdk 使用的是基于网络协作的组件设计. 如下图: .. raw:: html
交易中继网关
交易中继网关
交易所行情
交易所行情
行情网关
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协议连接到行情网关和交易中继网关, 实现行情和交易功能 TqSdk2 继承了上述这种架构,并且将交易中继网关并入了本地,因此**额外**提供给用户直连期货公司的选项: .. raw:: html
期货公司交易系统
CTP/FEMAS/UFX
期货公司交易系统 CTP/FEMAS/UFX
交易所行情
交易所行情
行情网关
Open Md Gateway
行情网关 Open Md Gateway
DIFF 协议
TqSdk2
TqSdk2
Viewer does not support full SVG 1.1
在选择 TqSdk2 直连模式时: * 用户代码从中继模式切换直连模式,只用修改一行代码 * 直连模式下,省去交易指令需要经过交易中继网关流程,减少了用户交易指令到达期货公司的延迟,并提升系统稳定性 需要注意选择直连模式时,用户需要向期货公司申请程序化接入并且填写自己的接入信息 :ref:`tqctp` 同时 TqSdk2 中将 TqSdk 里的底层代码全部用 C++ 进行了重构,会在这些地方有明显改善: * 维持了大部分 TqSdk 中的接口,让用户 TqSdk 中的代码可以不需修改的移动到 TqSdk2 * 有效减少了程序内的运算耗时 * 同等代码下 TqSdk2 的回测速度提升了十倍以上 * 相比 TqSdk, :ref:`tqrohon` 其它区别 ------------------------------------------------- 此外, 还有一些差别值得注意 * TqSdk2 要求 Python 3.6.4 以上版本, 不支持 Python 2.x 要学习使用 TqSdk2, 推荐从 :ref:`quickstart` 开始