前言
国内期货实盘里,同一时刻你想买螺纹钢,可以挂限价在买一排队(排队价),也可以直接吃卖一(对价),或挂得更低等待成交。程序化里若价格选错,典型结果是:回测里假设都能成交,实盘却整天挂单不动,或对价吃单滑点过大侵蚀 edge。
天勤 TqSdk 的TargetPosTask用参数price控制调仓时的报价风格:文档写明"ACTIVE"为对价(买用卖一、卖用买一),"PASSIVE"为排队(买用买一、卖用卖一,可能造成较多撤单)。手写insert_order时则自己填limit_price。下面按国内期货实盘常见成交问题,说明三种报价方式各自适合什么场景,以及和回测假设对齐时要注意什么。
一、三种说法与 ACTIVE/PASSIVE 对应
| 口语 | 含义 | TargetPosTask |
|---|---|---|
| 对价 | 吃对手盘,偏成交速度 | price="ACTIVE"(默认) |
| 排队价 | 挂在本方最优价等成交 | price="PASSIVE" |
| 限价 | 指定价格 | insert_order(..., limit_price=)或 task 的 Callable 自定义 |
文档还允许price为 Callable:传入方向返回价格,返回 nan 会抛错——适合严格限价或结合quote加减 tick。
二、ACTIVE 适用场景
- 趋势跟进,希望尽快达到目标净仓;
- 流动性正常、点差小于策略容忍;
- 回测与模拟用 ACTIVE,实盘行为较接近“能成交”假设。
注意:ACTIVE 在波动大时成交价会跳,滑点需回测敏感性或模拟统计。
三、PASSIVE 适用场景
- 更在意价格,愿意等;
- 流动性好、队列不太长;
- 文档提示 PASSIVE 可能造成较多撤单,在行情剧烈时 task 会随价格变化撤单重挂,CPU 与报单频率上升。
不适合临近涨跌停、盘口一侧缺失时硬排队——可能长期不成交。
四、构造示例与注释
fromtqsdk.libimportTargetPosTask# 对价调仓(默认)task_active=TargetPosTask(api,"SHFE.rb2510",price="ACTIVE")# 排队调仓task_passive=TargetPosTask(api,"SHFE.rb2510",price="PASSIVE")# 自定义:买入不超过 last_price + 1 tickdefmy_price(direction):tick=quote.price_tickifdirection=="BUY":returnmin(quote.ask_price1,quote.last_price+tick)returnmax(quote.bid_price1,quote.last_price-tick)task_custom=TargetPosTask(api,"SHFE.rb2510",price=my_price)quote需在wait_update后有有效买卖盘;刚开盘或指数类合约可能缺档,要判断 nan。
五、与 insert_order、限价单关系
学习阶段可用insert_order(symbol, "BUY", "OPEN", 1, limit_price=...)理解拒单。生产环境趋势策略常用 task 统一调仓;同一合约勿 task 与 insert_order 混用(官方明确)。
FAK/FOK 等高级参数见 insert_order 专题,与 task 是不同路径。
六、怎么选:决策表
| 情况 | 建议 |
|---|---|
| 模拟验证逻辑 | ACTIVE,先跑通 |
| 大单怕滑点 | PASSIVE 或拆单 min/max_volume |
| 流动性差 | 缩小仓位或暂停,勿死挂 |
| 严格限价 | Callable 或 insert_order |
总结
限价、对价、排队价看似只是下单细节,实则决定了策略在真实盘口里是“尽快成交”还是“以等待换确定性”。当你把 ACTIVE/PASSIVE 的选择与策略目标、流动性场景、以及回测/模拟的成交假设统一起来,执行层就不会成为收益曲线的黑箱:回测里你以为会发生的交易,在实盘里更可能以相近的路径发生。另一方面,夜盘或盘口变薄时,排队可能长期不成交;这时需要用规则明确什么时候禁开新仓、什么时候允许用更合适的 price 模式调整执行。让这些边界写进配置并在日志里留痕,回测与实盘就能形成更稳定的衔接。
FAQ
1)默认是哪个?
ACTIVE。
2)PASSIVE 撤单多?
文档已提示,夜盘活跃品种要监控报单频率。
3)股指平今贵?
配合 offset_priority,见开平专题。
4)回测区分 ACTIVE/PASSIVE?
模拟成交模型不同,应用同一 price 做样本外。
风险提示
本文讨论执行方式,不构成投资建议。