news 2026/6/11 3:21:56

期货量化大单分笔执行:TargetPosTask 拆分与进度跟踪

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
期货量化大单分笔执行:TargetPosTask 拆分与进度跟踪

前言

国内期货趋势量化程序里,信号层算出「目标净持仓 20 手螺纹钢」后,执行层通过天勤TargetPosTask.set_target_volume(20)告诉自动调仓任务;task 在每次api.wait_update()里比较柜台get_position().pos与目标差额,用price="ACTIVE"对价买卖。账户规模上来后,一次要调 20 手,在盘口较薄时容易一次吃穿多档买卖盘,滑点明显大于回测假设。

有人手写for循环分批insert_order,却和同一合约上的TargetPosTask抢仓位,导致净持仓乱跳。天勤在TargetPosTask上提供min_volumemax_volume:两者同时设置时进入源码所称的大单拆分模式,由 task 在多次wait_update中分批报单。下面说明怎么设参数、怎么跟踪拆分进度。

一、拆分模式触发条件

task=TargetPosTask(api,"SHFE.rb2510",price="ACTIVE",min_volume=1,max_volume=3,)task.set_target_volume(20)

文档要点:

  • set_target_volume后不立刻发满 20 手。
  • 每次wait_update,task 比较pos与 target,在本轮发min_volumemax_volume之间的一手数。
  • 必须持续wait_update,否则拆分停滞。

同一账户同一 symbol 只能有一个 task 实例;拆分参数在首次创建时固定,后续不能 silently 改max_volume

二、进度怎么跟踪

每帧记录:

pos=api.get_position(SYMBOL).pos target=20# 你维护的目标gap=target-pos alive=sum(o.volume_leftforoinapi.get_order().values()ifo.instrument_idinSYMBOLando.status=="ALIVE")

gap趋近 0 且无 ALIVE 单,拆分完成。若长时间gap不变,查薄盘、涨跌停、拒单last_msg

三、与报单频率风控配合

拆分会增加报单次数,易触发TqRuleOrderRateLimit。应:

  • 拉大max_volume与帧间隔的自然平衡(依赖 wait_update 节奏)。
  • add_risk_rule里设合理频率上限。
  • 夜盘流动性差时临时调小单批手数。

四、何时不用拆分

  • 小手数账户,1~2 手直接调仓更简单。
  • 价差套利两腿要同步,拆分可能破坏比例,应单独设计。
  • 紧急平仓set_target_volume(0)时可去掉拆分,重建 task 不设 max_volume。

五、和 InsertOrderUntilAllTradedTask

若需「指定价必须全成」另一类需求,可看InsertOrderUntilAllTradedTask;与趋势TargetPosTask仍是不同路径,勿混用同合约。

六、拆分参数怎么试

建议流程:在TqSim上对目标 20 手,分别试max_volume=1/3/5,记录完成时间与平均每手价。选「完成时间可接受且滑点未明显恶化」的批次。夜盘流动性差时把max_volume调小,日盘可调大。

七、进度条式日志

ifgap!=last_gap:log("split_progress",target=target,pos=pos,gap=gap,alive=alive)last_gap=gap

运维看日志就能知道卡在拆分的第几批,而不是以为程序死机。

八、紧急平仓时关闭拆分

紧急set_target_volume(0)若仍拆分,平仓变慢。可进程级重建不带max_volume的 task,或临时提高max_volume到剩余 gap(需停机重建 task,遵守发版边界)。

总结

大单分笔执行的核心,是让TargetPosTaskmin_volume/max_volume约束下自动分批,而不是手写 insert 循环。天勤在多次wait_update里推进拆分进度,用posvolume_left与自维护 target 即可跟踪。模拟盘先试出适合品种的批次大小,并观察报单频率规则是否触顶,再用于实盘调仓。

FAQ

1)随机手数可固定吗?

区间设成min_volume=max_volume=2即固定每批 2 手。

2)拆分中能改 target 吗?

可以set_target_volume新值,task 按新目标继续追。

3)PASSIVE 拆分更慢?

通常更慢但滑点更小,按品种选择。

4)回测支持拆分吗?

TargetPosTask在回测中同样生效,可观察成交分布。


本文基于天勤 TqSdk 公开 API 整理,不构成投资建议。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 3:12:53

社交媒体数据采集终极指南:用snscrape轻松抓取8大平台内容

社交媒体数据采集终极指南:用snscrape轻松抓取8大平台内容 【免费下载链接】snscrape A social networking service scraper in Python 项目地址: https://gitcode.com/gh_mirrors/sn/snscrape 还在为社交媒体数据分析发愁吗?想要从Facebook、Twi…

作者头像 李华
网站建设 2026/6/11 3:11:57

团队技术文档难维护?用 Claude 自动生成清晰的 API Markdown 文档

在研发团队中,技术文档往往面临“写着痛苦、读着迷茫、维护全靠忘”的尴尬境地。代码频繁迭代,而 API 文档却依旧停留在三个月前的版本。为了解决这一痛点,许多技术 Leader 和开发者开始引入大语言模型来自动化这一流程。为了规避复杂的网络环…

作者头像 李华
网站建设 2026/6/11 3:10:00

Behdad字体:为现代数字世界重新定义波斯语排版体验

Behdad字体:为现代数字世界重新定义波斯语排版体验 【免费下载链接】BehdadFont Farbod: Persian/Arabic Open Source Font - بهداد: فونت فارسی با مجوز آزاد 项目地址: https://gitcode.com/gh_mirrors/be/BehdadFont 在数字时代&…

作者头像 李华