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

期货量化限价挂单总漏状态:天勤 InsertOrderTask 用法

前言

趋势策略用TargetPosTask很省心,但有些场景必须限价挂单等待成交:例如固定价位补单、做市式报价、或要求「挂出去、未成再撤再挂」。手写insert_order+ 轮询order.status,容易漏撤单、漏部分成交、或在同一帧重复下单。

天勤TqSdktqsdk.lib里提供InsertOrderTask等任务类,把「挂单—等待—撤单」封装进与wait_update协作的模型。下面说明适用场景、最小用法、与主循环关系,具体 API 以当前文档为准。

一、什么情况下用手写报单链太累

  • 限价单挂在盘口,要直到成交或超时撤单
  • 部分成交后 remainder 如何处理要一致
  • 同一策略里多处下单,状态变量散落

若只是「目标净仓 = 3」,优先TargetPosTask;限价挂单是执行层细节,再考虑InsertOrderTask

二、任务类与 wait_update 的关系

TqSdk 推荐在while True: api.wait_update()里驱动。InsertOrderTask在每次wait_update后推进内部状态,你只需创建任务并在循环里调用其更新方法(以文档示例为准,常见模式如下):

fromtqsdkimportTqApi,TqAuth,TqSimfromtqsdk.libimportInsertOrderTask api=TqApi(TqSim(),auth=TqAuth("账户","密码"))symbol="SHFE.rb2510"quote=api.get_quote(symbol)# 参数名、方向、开平以 reference/tqsdk.lib.rst 为准task=InsertOrderTask(api,symbol,direction="BUY",offset="OPEN",volume=1,limit_price=3500)whileTrue:api.wait_update()task.update()# 若文档为其他方法名,以文档为准iftask.is_finished():# 或文档中的完成判断print("order task done",task.order)breakapi.close()

上线前在模拟盘对照文档核对:update/is_finished等名称随版本可能调整,以你安装的tqsdk为准。

三、与 insert_order 手写对比

方式适合
insert_order一次市价或立即关心下一帧状态
InsertOrderTask限价持续有效、需自动撤改
InsertOrderUntilAllTradedTask必须全部成交才继续(另文)

手写时要自己对order.volume_leftorder.status做状态机;任务类把常见路径封装,减少漏分支。

四、集成到策略主循环

不要把InsertOrderTask放在没有wait_update的代码路径里。典型结构:

  1. 信号层判定「需要挂限价单」
  2. 创建InsertOrderTask,记录 task 引用
  3. 主循环每帧task.update(),直到完成或超时
  4. 完成后再恢复信号逻辑或设TargetPosTask

同一 symbol 避免同时多个未完成任务,否则撤单对象可能搞混。

五、注意边界

  • 涨跌停、非交易时段报单会失败,任务类不替代时段过滤。
  • 部分成交后策略总目标仓仍要对齐position
  • 模拟与实盘撮合不同,限价挂单在TqSim里先测行为。

总结

限价挂单反复漏撤单、漏部分成交,根因通常是手写insert_order却没有与wait_update同步的状态机。若策略目标是净仓、追价不紧,优先TargetPosTask;若必须「挂限价、等待、未成再撤再挂」,再考虑tqsdk.lib里的InsertOrderTask,在每次wait_update后调用文档规定的update(及完成判断),直到任务结束再恢复信号逻辑。

集成时注意:同一 symbol 避免多个未完成任务并行;涨跌停与非交易时段仍会拒单,任务类不替代时段过滤;部分成交后总仓位仍要对齐position。模拟与实盘撮合不同,限价排队行为须在TqSimTqKq里先测「成交 / 撤单 / 超时」是否符合预期。

建议以本地reference/tqsdk.lib.rst官方示例为准跑通一轮(方法名随版本可能变化),再嵌入信号模块;上线前用日志记录每次 task 创建、完成、撤单原因,便于与客户端委托列表对照。

FAQ

1)和 TargetPosTask 能同时用吗?

可以,注意同一合约委托冲突,先完成挂单 task 再调目标仓。

2)超时怎么设?

以 lib 文档参数为准,无则外层计时器 + 主动 cancel。

3)多合约多个 task?

每个合约独立 task 实例,循环内逐个 update。

4)回测能用吗?

视回测撮合是否支持限价排队,需实测。

风险提示

本文用于程序化交易技术说明,不构成投资建议。

http://www.gsyq.cn/news/1464017.html

相关文章:

  • Windows窗口管理革命:用AlwaysOnTop实现300%效率提升的终极方案
  • 实地探访深圳木点点整装:21年本土工厂,凭什么能做到84%转介绍率? - 产品测评官
  • qorder实战:基于快马平台快速集成订单状态管理与物流跟踪接口
  • 律所多人协作办案的实践方法:权限管理、任务跟踪与在线协同的落地经验
  • 如何用Pixelorama零基础成为像素艺术创作高手:从入门到精通的完整指南
  • 元宝 LeetCode 2977. 转换字符串的最小成本 II C语言实现
  • 【AI工具产品路线图预测权威指南】:20年实战经验总结的5大关键信号与3年趋势推演模型
  • 别再只懂MSE了!PyTorch实战:用Smooth L1 Loss搞定目标检测中的边界框回归
  • 手把手教你用TwinCAT 3为EtherCAT设备生成XML配置文件(附避坑指南)
  • 别再死记硬背了!用这4种方法搞定正激拓扑的磁复位,选型避坑指南
  • 2026年新消息:东莞诚信的圆瓶贴标机定做厂家选型指南与骐麟新创智能推荐 - 2026年企业资讯
  • RTX5凭啥通过汽车级安全认证?深入剖析其在STM32F407上的零中断延迟与确定性
  • 3分钟快速安装Figma中文界面插件:设计师人工翻译校验的终极指南
  • 保姆级教程:用MATLAB处理CSV实测数据,从频谱到1/3倍频程的完整分析流程
  • 别再在PyCharm里直接敲pip install了!SyntaxError报错的真正原因和3种正确安装姿势
  • Matlab版DBN-BP两阶段回归预测工具包:含训练脚本、可视化结果与实测数据
  • Logstash管道(Pipeline)配置入门:手把手教你写第一个`.conf`文件并理解input/filter/output
  • FastAPI+Uniapp私域知识库问答系统:支持PDF/TXT上传、多端部署与语义检索
  • GCC 的 inline 扩展,和c99 inline规则的异同,static inline的统一
  • AI工具×智能简历:3天打造HR秒回率超85%的动态求职系统
  • 轻量级3D场景图技术:开放词汇与语义属性组合
  • 用Python+OpenCV复现1952年植物光谱实验:从叶片颜色到叶绿体提取,手把手教你做高光谱分析
  • 【无敌数据驱动】【自动驾驶】一种数据驱动的优化前馈补偿器的方法,用于自动驾驶汽车控制研究(Matlab代码实现)
  • 华为WLAN三层漫游实战:旁挂组网下,如何让不同VLAN的AP无缝切换不掉线?
  • 告别单核苦力!手把手教你用DSP6678的MPAX实现多核镜像共享(附完整工程配置)
  • 蒙特卡洛仿真教学实践包:双语课件+投资组合/面积估算/方差缩减全功能示例代码
  • 解密Sunshine游戏串流:技术架构与跨平台部署方案深度解析
  • Linux程序崩溃了别慌!手把手教你用GDB分析core文件定位段错误
  • 基于51单片机的病床呼叫系统(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)_文章底部可以扫码
  • DICOM文件不只是张图:拆解CT影像里隐藏的500+个信息字段(含Tag查询手册)