期货量化远月盘口太薄还要不要订:订阅边界与执行取舍
前言
同一期货品种往往同时挂牌多个具体月份:成交量集中在主力月份,远月或非主力月份盘口很薄,买一卖一量小、点差大,挂单可能一整天不成交。有人习惯「能订的都订上」,结果 CPU 占用高、逻辑复杂,但真正下单的仍是主力;更糟的是程序误对远月set_target_volume,order.status长期是ALIVE,volume_left不变,策略以为在调仓,实际卡在队列里。
天勤量化订阅合约的方式很统一:api.get_quote(代码)拿 tick 级行情,api.get_kline_serial(代码, 周期秒数, data_length=N)拿 K 线。订非主力和订主力没有语法区别,区别在盘口质量。下面说明什么该订、什么不该交易、如何用 quote 字段判断流动性够不够你下单。
一、名词对照
| 名称 | 是什么 | 为何与非主力有关 |
|---|---|---|
| 主力月份 | 成交量最大的具体合约 | 盘口厚,ACTIVE 对价容易成交 |
| 非主力/远月 | 成交清淡的月份 | 订了也可能不该下单 |
symbol | 合约代码字符串 | 每个 symbol 一对 quote + 可选 K 线 |
get_quote | 实时行情快照 | bid_price1/ask_price1为一档买卖价 |
bid_volume1/ask_volume1 | 一档挂单量 | 小则表示薄 |
price_tick | 最小变动价位 | 用来算点差有几个 tick |
wait_update | 推进数据更新 | 不调用则读到旧盘口 |
TargetPosTask | 调仓到目标净仓 | 应对 trade 列表里的 symbol 使用 |
ACTIVE/PASSIVE | 对价/排队价模式 | 薄盘口上 PASSIVE 极易不成交 |
ALIVE | 委托仍在场未结束 | 薄盘口常见长时间 ALIVE |
| trade 列表 | 允许下单的 symbol 集合 | 与 watch 观察列表分开 |
二、订与不订:按场景选
| 场景 | 是否订非主力 | 说明 |
|---|---|---|
| 趋势策略只做主力 | 否 | 只订underlying_symbol对应具体月 |
| 跨期套利 | 是 | 近月、远月都要订,两腿都要流动性检查 |
| 主连算信号、具体月执行 | 否 | 不必订所有月份 |
| 只看远月基差写日志 | 可订,不交易 | 放入 watch 列表,降频读取 |
原则:程序只对 trade 列表调用set_target_volume;watch 列表里的合约不参与下单。
三、用 quote 判断「够不够我成交」
wait_update()之后读:
q=api.get_quote(symbol)spread_ticks=(q.ask_price1-q.bid_price1)/q.price_tick depth=q.bid_volume1+q.ask_volume1 thin=depth<MIN_DEPTH# MIN_DEPTH 按品种实测,如螺纹钢与国债不可相同wide=spread_ticks>MAX_SPREAD_TICKS若bid_price1或ask_price1为 nan,表示无有效买卖盘,应跳过本帧下单。非主力在夜盘或小品种上 nan 更常见。
薄盘口时:
- 避免
price="PASSIVE"长期排队(天勤文档写明 PASSIVE 可能造成较多撤单,薄盘口等于不成交)。 - 若必须交易,常用
ACTIVE缩小手数,或启用min_volume/max_volume拆单。 - 临近涨跌停时另加熔断,不硬挂。
四、订阅数量与性能
每多订一个 symbol,每次wait_update可能多处理一份行情 diff。观察列表过长会拖慢主循环。观察用途可降频:只在 K 线datetime变时读一次,不必每个last_price变化都算策略。
五、与主连研究的关系
回测用KQ.m@时曲线连续,容易忽略远月流动性。模拟盘务必对实际执行的月份做盘口检查;信号层不要对非 trade 列表的 symbol 产生目标仓。
总结
非主力合约订不订,取决于它在你的系统里是「要成交的标的」还是「只看的标的」。天勤不会因为月份非主力就拒绝订阅,但bid_volume1、ask_volume1和点差会如实反映流动性差。把 trade 与 watch 分开、下单前用盘口阈值过滤、薄盘慎用 PASSIVE,可以避免在远月长期挂着 ALIVE 单却达不到策略意图,要点是:订阅多不等于交易多,执行层要对着能成交的月份说话。
FAQ
1)套利两腿一薄一厚?
两腿都检查;一腿不达标则整笔套利暂停,避免单腿裸露。
2)怎么知道当前主力是哪个月?
主连 quote 的underlying_symbol在wait_update后读取。
3)指数KQ.i@要订吗?
多用于研究;默认不当成交标的,除非品种规则明确支持。
4)TqSim 里薄盘口一样吗?
逻辑相同,模拟成交可能比实盘乐观,仍要检查字段。
风险提示
以上内容用于订阅与执行取舍参考,不构成投资建议。
