get_tick_serial 降频写法:盘口变化驱动的短线过滤框架 前言有同事做短线过滤时一口气订了 tick策略 CPU 直接拉满信号却没更准。本文说的get_tick_serial是天勤TqSdk的 tick 序列订阅接口TqApi.get_tick_serial()不是不能用而是要想清楚你的策略到底需不需要每一笔成交。多数分钟级或「只在盘口明显变化时反应」的逻辑用 tick 订阅可以但必须做降频和触发收敛。我用一个「盘口变化 分钟趋势过滤」的小框架举例说明怎么订 tick、怎么和 K 线时钟对齐以及怎么避免 tick 风暴拖垮主循环。一、先定策略粒度你到底要不要 tick需求更合适的订阅分钟趋势 盘中过滤K 线为主tick 辅助盘口微观结构tick 为主严格降频仅成交确认不必全量 tick下面示例属于第一类5 分钟趋势定方向tick 只在买卖盘变化时检查是否允许开仓。判断是否需要 tick 的一个简单标准如果你的持仓周期小于 3 根 K 线且决策依赖盘口变化可以考虑 tick否则先用 K 线 quote 往往更划算。很多「订了 tick 却没用到微观信息」的策略CPU 成本是纯浪费。二、最小订阅与变化触发fromtqsdkimportTqApi,TqAuth,TqSim,TargetPosTask apiTqApi(TqSim(),authTqAuth(账户,密码))symbolDCE.m2509tickapi.get_tick_serial(symbol)klapi.get_kline_serial(symbol,300,data_length200)qapi.get_quote(symbol)taskTargetPosTask(api,symbol)deftrend_bias(df):ma10df.close.rolling(10).mean().iloc[-2]ma30df.close.rolling(30).mean().iloc[-2]ifma10ma30:return1ifma10ma30:return-1return0whileTrue:api.wait_update()# 只在 tick 变化时做盘口检查避免空转ifnotapi.is_changing(tick.iloc[-1],last_price):continuebiastrend_bias(kl)ifbias0:continue# 盘口过滤买卖价差过大时不下spreadq.ask_price1-q.bid_price1ifspread0orspread3:# 阈值按品种调continuetask.set_target_volume(bias)核心不是「有 tick 就算」而是is_changing(tick)收窄触发面。这段代码里trend_bias仍建议在 K 线换根时缓存不要每个 tick 都重算均线。否则 tick 再降频指标层仍在高频计算性能瓶颈只是从「下单」挪到了「算指标」。三、tick 与 K 线时钟不要混用常见错误用 tick 更新次数当 K 线 bar 计数导致一分钟内重复调仓十几次。建议趋势方向只在 K 线换根时更新tick 层只做过滤或微调调仓动作加冷却时间或 bar 级状态锁importtime last_trade_ts0COOLDOWN_SEC60# 在下单前nowtime.time()ifnow-last_trade_tsCOOLDOWN_SEC:continue# 通过过滤后再 set_target_volumelast_trade_tsnow冷却时间可以和 bar 级锁叠加使用bar 锁保证「一根 K 线最多一次方向判断」冷却保证「即使盘口抖动也不会连发」。两层一起用重复下单概率会再降一截。四、性能诊断先量化再优化上线前临时加统计上线可改 DEBUGimporttime n,t00,time.time()whileTrue:api.wait_update()n1iftime.time()-t010:print(wait_update/10s:,n)n,t00,time.time()若 10 秒内wait_update上万次要么 tick 太密要么订阅过多合约。先减订阅再谈算法优化。还可以加一项「每帧计算耗时」统计。若 wait_update 次数正常但耗时高瓶颈在 pandas 滚动或日志 IO若次数异常高瓶颈在订阅粒度和触发条件。先定位再优化避免盲目改参数。五、和纯 K 线策略如何取舍如果策略持仓周期在 15 分钟以上多数情况下只订 K 线更稳。tick 适合需要盘口价差过滤需要成交瞬间确认需要微观止损不要为了「看起来更高级」而订 tick性能成本会反噬收益。若策略最终只在少数时段需要 tick可以按时段动态订阅白盘活跃段开启午休或夜盘低波动段退回纯 K 线。这样比全天 tick 更省资源也更符合实际交易节奏。总结天勤get_tick_serial的价值在于提供更细的市场切片但策略工程上必须先做触发收敛。盘口变化驱动的过滤框架关键是 tick 负责「何时检查」K 线负责「方向判断」下单层再加冷却和状态锁。这样既能用到 tick 信息又不容易把主循环拖进高频空转。长期维护时建议把 tick 相关逻辑封装成独立模块并写清楚「启用条件」。团队后续扩容品种或改周期时能一眼判断该不该上 tick避免性能问题在规模扩大后才集中爆发。FAQ1tick 和 quote 都要订吗看需求。价差过滤用 quote 往往够要成交序列细节才订 tick。2data_length 设多少够算过滤指标即可tick 序列不宜过长避免内存压力。3能否 tick 驱动 K 线策略可以但要加 bar 级锁避免一分钟内多次调仓。4夜盘 tick 更密怎么办提高过滤阈值或延长冷却必要时夜盘单独参数。5回测里怎么验证 tick 逻辑先在模拟盘跑回测若不支持同等粒度要单独评估执行差异。风险提示本文用于期货量化技术实践讨论不构成任何投资建议。高频触发策略对成本和延迟敏感请在可承受风险范围内验证。