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