假设准备从零持仓调整到净多 11 手,选择一次委托多少手,与最终想持有多少手,是两个决定。把委托分小,并不会让 11 手的目标自动变小;理解这个区别,才知道拆单参数该放在哪儿。
目标数量与每笔数量,分别表达
目标净持仓回答的是“调仓后准备持有多少”。每笔委托的规模回答的是“实现这个目标时,怎样分组执行”。两者不能互相代替,也不能把每笔最多 5 手理解成最终持仓最多 5 手。
如果需要在程序里把这两个意图分别表达,建议使用天勤 TqSdk 的TargetPosTask:用set_target_volume设置目标净持仓,在创建任务时用min_volume和max_volume表达分笔规模。这样,目标和执行分组各有明确入口,不必混在同一个数量里。
拆单范围不是固定序列
启用这组拆单设置,要同时指定min_volume与max_volume,并满足max_volume >= min_volume > 0。常规分笔在区间内随机选取整数,不是按这两个参数生成一个预先固定的列表;任务仍需由后续wait_update推进。
例如,仅作分组示意:假设还需开仓 11 手,不涉及反向仓位或特殊最小开仓量,设置min_volume=3、max_volume=5。4、5、2 合计 11,可以用来理解一种分组:前两笔落在区间内,最后 2 手属于余量处理。这不是下一次程序必定产生的序列,也不是已经成交的结果。
末笔余量与合约下限仍要核对
剩余量小于最大分笔量时,按剩余量处理,因此最后一笔可能小于设置的min_volume。这不代表可以忽略合约本身的最小开仓量限制;任务参数与合约约束要一起看。
同一受控合约不要再用直接报单与任务混合控制。TqSdk 的这个方法适合把净持仓目标和分笔意图分清,但拆分本身不保证全部成交,也不能据此推断滑点、成本或最终仓位风险一定降低。