常见问题与支持
先按症状定位问题,再查看对应指南。提交问题时附上 SDK 版本、运行方式和完整异常,可以减少来回确认。
安装后仍提示找不到 tqsdk
通常先检查“安装用的 Python”和“运行脚本的 Python”是否一致。在运行脚本的同一终端或 IDE 解释器中执行:
python -m pip show tqsdk
python -c "import sys, tqsdk; print(sys.executable); print(tqsdk.__version__); print(tqsdk.__file__)"
确认解释器、版本和导入路径正确,并检查当前文件或文件夹是否误命名为 tqsdk.py 或 tqsdk。重新安装的步骤见 1. 安装 TqSdk。
快期账户与期货资金账户有什么区别
TqAuth 填快期账户,用于登录 TqSdk 服务;TqAccount 填期货公司、资金账号与交易密码,用于实盘账户接入。不要将两套账号混填。见 快期账户 与 账户与交易。
程序在 wait_update() 停住了
wait_update() 会等待业务数据更新;没有新数据时等待是正常行为。先确认合约仍有效、处于交易时段、连接没有报错。需要等待截止时间时,使用绝对时间戳:
import time
# 放在已经创建 api 的程序中。
updated = api.wait_update(deadline=time.time() + 10)
if not updated:
print("本次等待期间没有业务数据更新")
返回 False 只表示本次到达截止时间仍没有业务数据更新,不能单独据此断定连接已断开。详见 wait_update()。
行情为 NaN、K 线不更新
数据未就绪: 初始化时部分字段可能为
NaN;继续驱动更新并检查所需字段。合约已到期: 老示例里的固定月份合约不一定还在交易。看行情可以先使用
KQ.m@SHFE.rb等主连代码。更新判断不同:
is_changing(klines.iloc[-1], "datetime")只在新 K 线开始时触发,不会随每次最新价变化触发。历史区间不匹配: 回测时检查合约存续期与历史数据权限。
合约代码、主连与历史数据说明见 合约, 行情和历史数据。
为什么模拟持仓在快期 APP 中看不到
默认的 TqSim 是程序内的本地模拟账户,记录不会同步到快期客户端。希望在快期 APP、快期专业版等客户端查看模拟持仓时,使用 TqKq。两种账户的区别和初始化方式见 选择适合的模拟账户。
下单后没有成交,或者状态是 FINISHED
insert_order() 返回委托引用,下单和撤单请求需要后续 wait_update() 推进。委托未成交还可能与价格、交易时段、资金或拒单有关,请检查 order.last_msg 与 order.volume_left。
FINISHED 表示委托生命周期结束,并不等于全部成交;成交数量为 volume_orign - volume_left。完整说明见 账户与交易。
回测报 BacktestFinished 是失败了吗
BacktestFinished 是回测正常结束的通知。在循环外捕获它,退出前关闭 API,再按需读取模拟账户统计。完整可复制示例见 7. 把策略放进历史回测。
到用户论坛提问
如果仍未解决,前往 天勤用户论坛 搜索相同问题或发帖。建议一起提供:
Python 与 TqSdk 版本、操作系统。
运行模式:实时行情、本地模拟、快期模拟、历史回测或实盘。
相关合约、回测日期、你期望的结果与实际结果。
可复现的最小代码和完整异常堆栈,移除账号、密码、令牌及其他个人信息。