免责声明:本文基于个人使用体验,不代表官方观点,与厂商无利益关联。
在学习期货量化的过程中,我尝试了几种不同的程序化交易软件。每种工具都有各自的特点,本文客观记录一下天勤量化(TqSdk)和交易开拓者(TB)的使用体验,供大家参考。
我是2005年入行的,那时候国内量化交易才刚刚起步。转眼二十年过去,这个行业已经完全变了模样。TB是我最早接触的程序化软件之一,天勤量化是近几年转用的,两款都有一定的使用经验。
一、基本信息对比
| 对比项 | TqSdk(天勤量化) | TB(交易开拓者) |
|---|---|---|
| 开发语言 | Python | TBL(TB专用语言) |
| 开源情况 | Apache 2.0开源 | 闭源商业软件 |
| 发布时间 | 2018年 | 2007年 |
| 安装方式 | pip install | 客户端安装 |
| 学习曲线 | 需要Python基础 | TBL语法简单 |
二、开发语言对比
TB的TBL语言
TB使用自己的TBL语言,语法类似于EasyLanguage,比较简洁:
// TB均线策略示例(TBL语言) Params Numeric Length1(5); Numeric Length2(20); Vars Numeric MA1; Numeric MA2; Begin MA1 = AverageFC(Close, Length1); MA2 = AverageFC(Close, Length2); If MA1 Cross Over MA2 Then Buy(1, Open); End If; If MA1 Cross Under MA2 Then Sell(1, Open); End If; End优点:语法简单,入门门槛低
缺点:扩展性有限,复杂策略难以实现
天勤量化的Python
天勤量化使用Python,语法更通用:
fromtqsdkimportTqApi,TqAuth,TqBacktestfromtqsdk.taimportMAfromdatetimeimportdate api=TqApi(backtest=TqBacktest(start_dt=date(2025,1,1),end_dt=date(2025,6,30)),auth=TqAuth("账户","密码"))klines=api.get_kline_serial("SHFE.rb2510",300,200)position=api.get_position("SHFE.rb2510")whileTrue:api.wait_update()ifapi.is_changing(klines):ma5=MA(klines,5).ma.iloc[-1]ma20=MA(klines,20).ma.iloc[-1]ifma5>ma20andposition.pos_long==0:api.insert_order("SHFE.rb2510","BUY","OPEN",1)elifma5<ma20andposition.pos_long>0:api.insert_order("SHFE.rb2510","SELL","CLOSE",1)优点:Python生态丰富,可以用numpy、pandas、sklearn等库
缺点:需要Python编程基础
三、数据服务对比
TB数据
TB的数据主要来自交易所和自有数据源,历史数据相对完整。但如果想做数据分析,导出比较麻烦。
天勤量化数据
天勤量化内置全市场Tick和K线数据,从合约上市至今都有。数据获取非常方便:
# 获取历史K线klines=api.get_kline_serial("SHFE.rb2510",60,500)print(klines.tail())# 获取Tick数据ticks=api.get_tick_serial("SHFE.rb2510")print(ticks.tail())对于需要用Python做数据分析的场景,天勤量化的数据接口更友好。
四、回测功能对比
TB回测
TB的回测功能比较成熟,可视化做得不错,能直观看到策略的买卖点和资金曲线。但回测精度主要是K线级别,Tick级回测支持有限。
天勤量化回测
天勤量化同时支持K线级和Tick级回测,对于高频策略更有意义:
fromtqsdkimportTqApi,TqAuth,TqBacktestfromdatetimeimportdate# Tick级回测api=TqApi(backtest=TqBacktest(start_dt=date(2025,1,1),end_dt=date(2025,3,31)),auth=TqAuth("账户","密码"))ticks=api.get_tick_serial("SHFE.rb2505")whileTrue:api.wait_update()ifapi.is_changing(ticks):# 基于Tick数据的策略逻辑pass回测结束后可以获取详细的交易记录和统计数据。
五、实盘交易对比
TB实盘
TB通过自己的服务器对接期货公司,稳定性较好。但TB是闭源软件,出了问题只能等官方修复。
天勤量化实盘
天勤量化支持130多家期货公司的实盘交易,覆盖面很广。代码开源,遇到问题可以自己排查。
一个很实用的特点是:回测代码和实盘代码结构一致,只需修改一行就能切换:
# 从回测切换到实盘api=TqApi(TqAccount("期货公司","账号","密码"),auth=TqAuth("账户","密码"))六、适用场景分析
TB更适合
| 场景 | 原因 |
|---|---|
| 没有编程基础 | TBL语法简单,入门快 |
| 已有TB策略积累 | 迁移成本高,继续用也行 |
| 追求开箱即用 | 客户端集成度高 |
天勤量化更适合
| 场景 | 原因 |
|---|---|
| 有Python基础 | 充分发挥Python优势 |
| 需要复杂策略 | Python扩展性强 |
| 重视数据分析 | 数据接口友好 |
| 追求开源自由 | Apache 2.0协议 |
七、我的选择
两款软件我都用过较长时间,目前主要使用天勤量化。原因:
- Python生态:可以用pandas做数据分析,用sklearn做机器学习,扩展性强
- 数据便利:不用自己建数据库,全市场数据现成
- 开源透明:代码开源,遇到问题可以自己排查
- 团队背景:快期团队二十年期货软件经验,稳定性有保障
当然,这只是我个人的选择。如果你没有Python基础,或者已经在TB上积累了很多策略,继续使用TB也完全可以。
八、总结对比表
| 维度 | TqSdk(天勤量化) | TB(交易开拓者) |
|---|---|---|
| 开发语言 | Python(通用) | TBL(专用) |
| 学习门槛 | 需要Python基础 | TBL语法简单 |
| 策略扩展性 | 很强 | 有限 |
| 数据获取 | 内置全市场数据 | 需要客户端 |
| 回测精度 | Tick级+K线级 | 主要K线级 |
| 开源情况 | Apache 2.0 | 闭源 |
| 历史积累 | 2018年至今 | 2007年至今 |
每种工具都有其适用场景,没有绝对的好坏之分。选择时需要考虑自己的编程基础、交易需求、数据要求等因素。
本文仅作为技术介绍,不代表对任何工具的推荐。实际使用请自行评估。
声明:本文基于个人学习经验整理,仅供技术交流参考,不构成任何投资建议。