当前位置: 首页 > news >正文

期货量化 wait_update 超时怎么办:天勤 TqTimeoutError 分级处理

前言

主循环里api.wait_update()偶尔抛出TqTimeoutError,有人一律重试、有人立刻平仓,都可能过度反应。我习惯把超时当成「分级事件」:偶发可退避重试,连续失败则暂停发单并核对持仓,与断线重连流程衔接但不混为一谈。

天勤TqSdkreference/tqsdk.exceptions.rst中定义了异常类型。下面说明超时常见原因、重试与退避、和trading_enabled开关配合的写法。断线后持仓核对在另一篇有展开,此处只写超时本身。

一、超时不等于策略错了

可能原因包括:

  • 网络抖动,下一帧就恢复
  • 休市或品种无推送,wait_update等待过久
  • 订阅合约错误,长期无有效行情
  • 服务器侧短暂繁忙

先记录日志(时间、合约、连续次数),再决定重试还是停机,不要无日志地pass

二、分级处理表

级别条件动作
L1首次超时sleep 1~2 秒,continue
L2连续 3~5 次暂停新信号,继续wait_update
L3连续 >5 次或伴其他异常停发单,核对 position,通知人工

阈值按品种频率调整;Tick 策略比日线 K 线更严。

三、代码骨架

importloggingimporttimefromtqsdkimportTqApi,TqAuth,TqSimfromtqsdk.exceptionsimportTqTimeoutError log=logging.getLogger("tq")api=TqApi(TqSim(),auth=TqAuth("账户","密码"))trading_enabled=Truestreak=0whileTrue:try:api.wait_update()streak=0exceptTqTimeoutError:streak+=1log.warning("TqTimeoutError streak=%s",streak)ifstreak>=5:trading_enabled=Falselog.error("暂停发单,请核对行情与持仓")time.sleep(min(2*streak,30))continueexceptExceptionase:log.exception("wait_update: %s",e)trading_enabled=Falsetime.sleep(5)continueifnottrading_enabled:continue# 信号与下单

恢复trading_enabled = True前,应人工或reconcile函数确认行情与持仓正常。

四、与行情订阅、交易时段

若超时集中在休市,应加交易时段过滤,而不是无限重试。检查quote.datetime是否推进;不推进时先查合约代码与权限。

交易类超时(若文档区分)与行情超时可分开计数,交易超时更保守,直接暂停下单。

五、不要和 close 泄漏混淆

超时后反复new TqApi而不close旧实例,会导致连接泄漏。正常应在一个 api 上重试;仅当文档建议或长期无法恢复时,才close后重建。

总结

TqTimeoutError应分级处理,不宜一律重试或一律平仓:偶发超时可在 1~2 秒退避后continue;连续 3~5 次宜置trading_enabled = False、暂停新信号但继续wait_update;更高 streak 或伴随其他异常时,停发单并核对position、挂单与行情是否在推进。每次超时都要打日志(时间、连续次数),便于与断线重连流程区分——超时可能是抖动,断线则可能需持仓核对。

休市、合约写错、长期无推送时,加交易时段与quote.datetime检查,比无限重试更有效。不要每次超时都new TqApi而不close旧实例,除非长期无法恢复。交易类超时(若与行情超时区分)应更保守。恢复自动发单前,宜人工或 reconcile 确认行情与持仓正常。

建议在模拟盘观察超时 streak 触发是否符合预期;把阈值、退避上限、是否暂停发单写进策略配置;与结构化日志、紧急停止流程一并纳入上线检查表。

FAQ

1)捕获后要不要 api.close()?

单次超时不必;进程要退出时在 finally 里 close。

2)超时能设置更长吗?

构造或文档参数以官方为准,过长会掩盖行情停滞。

3)和 KeyboardInterrupt?

单独 except,保证 close。

4)多合约都超时?

先查网络与 auth,再查是否休市。

风险提示

本文用于异常处理技术说明,不构成投资建议。

http://www.zskr.cn/news/1463646.html

相关文章:

  • C++ 编码规范
  • 2026年大客户营销咨询选购指南,品牌排名 - mypinpai
  • PPTist:5分钟打造专业演示文稿的终极免费在线PPT制作工具
  • Mac窗口置顶神器Topit:如何让重要窗口永远在最前方
  • 紧急预警:标注数据漂移正 silently 毁掉你的模型效果!——用AI工具构建动态标注质量监控仪表盘(Python+Prometheus实战)
  • 2026年酒泉驾考驾校价格比较:新亿阳驾校性价比高吗? - mypinpai
  • 教育AI整合进入“深水区”:2024Q2行业报告显示,仅17%机构实现L1-L4能力跃迁——你的团队处在哪一级?
  • AI内容工作流会成为品牌基础设施
  • 量化程序如何同时支持回测、模拟盘和实盘
  • 避坑指南:MATLAB读取MDF和BLF文件时,你可能会遇到的5个常见错误及解决方法
  • 5个实用技巧:用marked.js打造高效Markdown处理方案
  • 别再只盯着CCF了!手把手教你用CORE Ranking和CCF中文期刊目录,精准定位你的投稿目标
  • 训练Mask-RCNN时,那个神秘的events文件怎么用TensorBoard打开看损失曲线?
  • Moneta Markets亿汇:“量子芯片点燃科技预期”
  • 如何免费实现游戏控制器虚拟化:ViGEmBus驱动完整指南
  • 手把手教你用STM32F072C8T6自制一个带串口的J-Link OB(附全套资料)
  • 为什么有些影视网站越用越顺手?一次实际体验后的分析
  • MatAnyone:一键实现专业级视频抠图的终极解决方案
  • 2026年现阶段,四川优质水果基地如何选?这份深度指南为您解析 - 2026年企业资讯
  • Aegisub字幕编辑高效解决方案:4大使用场景的完整技术指南
  • POP3协议抓包实战:从Wireshark过滤器技巧到常见认证失败排查
  • 3分钟掌握Windows窗口置顶技巧:告别频繁切换,工作效率提升50%
  • 终极指南:3分钟用BetterNCM Installer让网易云音乐焕然一新
  • 夹克制作全流程科普:工艺标准、自动化改造与设备科学选型
  • VTJ.PRO 双版本升级:构建企业级 AI 低代码协同开发新范式
  • NVIDIA Profile Inspector深度解析:显卡性能调优实战指南
  • 088、文字检测 YOLO 风格:用 YOLO 做场景文字检测替代 DBNet 的实验
  • 别再只用Measure Inertia了!用CATIA VBA脚本一键生成零件最小材料包络盒(附完整代码)
  • DDD-016:分层架构与 DDD
  • 2026玉溪市权威认证贵金属回收 TOP5+黄金回收白银回收铂金回收门店地址电话推荐