股指期货量化平今太贵:天勤 offset_priority 怎么配
2026/6/9 19:37:12 网站建设 项目流程

前言

国内期货开仓、平仓要区分「开」和「平」;上期所等还区分平今、平昨,平今和平昨手续费可能不同。中金所股指期货平今手续费往往高于平昨,日内来回调仓若频繁平今,实盘账单会比回测难看一截。刚用手写insert_order的人容易只关心买卖方向,忽略offset;用天勤TargetPosTask的人则要理解参数offset_priority——它控制调仓时先平哪部分、何时开仓。

天勤量化里,TargetPosTask是常用的自动调仓类:你set_target_volume(3)表示目标净仓 3 手,真正报单、撤单发生在之后的每次api.wait_update()里。offset_priority是构造 task 时的字符串参数,源码注释里写了各取值的含义,默认是"今昨,开"。下面逐项说明,并讲股指类为何常改。

一、名词对照

名称含义
开仓 OPEN增加方向性持仓
平仓 CLOSE减少持仓;部分交易所分平今、平昨
平今平掉当日新开仓部分,股指常较贵
平昨平掉历史仓部分
TargetPosTask天勤目标持仓任务,单 symbol 单例
set_target_volume(n)设目标净仓,不立刻下单
wait_update()推进后 task 才会发单
offset_priority平今/平昨/开的顺序字符串
get_positionpos_long/pos_short等,影响能否平今
insert_order手写报单,需自填 offset;勿与 task 混用

二、offset_priority 取值说明(摘自天勤源码注释)

取值行为概要
今昨,开先平今,再平昨,平仓完成后再开仓;逗号表示等前序完成
今昨开平今、平昨、开部分指令可同时发,适合有单向大边保证金优惠的品种
昨开先平昨再开,禁止平今;适合平今费高的股指类
只开仓不平仓,锁仓类策略

中金所等不区分平今昨指令的交易所,内部按「先平当日新开仓再平历史仓」规则计算,文档有说明。

三、股指、国债示例

fromtqsdk.libimportTargetPosTask task_if=TargetPosTask(api,"CFFEX.IF2512",price="ACTIVE",offset_priority="昨开",)

CFFEX是中金所,IF是沪深300股指期货,后面数字是交割月份。昨开倾向减少平今次数,但不能保证绝不平今——若当日先有新开仓,仍可能产生平今路径,需用成交回报复盘。

螺纹钢在上期所常用默认"今昨,开""今昨开",要看期货公司保证金优惠,不能照搬股指配置。

四、为何创建后不能改

同一 symbol 的TargetPosTask在天勤里是单例:已用"今昨,开"创建后,再传"昨开"会抛异常。改配置需要重启进程,并在 VERSION 日志里标记。

五、与 insert_order、回测成本

官方明确:同一合约不要同时使用TargetPosTaskinsert_order。手写单时offset填错会拒单,需看order.last_msg

TqSim/TqBacktest要在手续费参数里体现平今平昨差异(若支持);offset_priority影响实际走哪条路径,三环境应一致,并在模拟盘统计平今笔数占比。

总结

股指、国债平今贵,是交易成本问题,不是均线算错。天勤用offset_priorityTargetPosTask内部决定平今、平昨、开仓的先后顺序,股指类可倾向昨开降低平今频率。需要记住的一点是:task 在创建时定参数,set_target_volume只改目标,不改开平顺序;把该参数与手续费假设、模拟成交回报一起验证,回测利润里才不容易藏着实盘才会出现的平今成本。

FAQ

1)昨开 能保证绝不平今吗?

不能绝对保证,用get_trade统计验证。

2)TargetPosScheduler 也有这个参数吗?

有,会传给内部 TargetPosTask,见target_pos_scheduler.py

3)锁仓怎么用?

有人用offset_priority="开",锁仓规则需单独设计。

4)多账户TqMultiAccount

构造 task 时可指定account,offset 仍按该 symbol 生效。

风险提示

以上内容用于开平顺序配置参考,不构成投资建议。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询