当前位置: 首页 > news >正文

期货量化休市日还触发定时任务:天勤交易日过滤思路

前言

策略里用TqScheduler或自己写「每天 14:55 平仓」,春节、国庆休市那天若仍触发,会去发单然后拒单,或白白唤醒进程。回测区间若包含停盘日,有时也会出现「无行情但循环在跑」的错觉。

天勤TqSdk不替你做全国节假日表,但quote上的交易时段、datetime是否推进,以及自建交易日历,可以过滤非交易日。下面写实盘过滤思路、与 scheduler 配合、回测区间注意点。

一、为什么定时任务会在休市触发

  • 定时器按本地时钟走,不看交易所日历
  • 回测wait_update按历史推进,与实盘日历不是同一套
  • 夜盘品种跨自然日,「今天是否交易」不能只看 weekday

所以要区分:自然日、交易日、该品种是否有夜盘。

二、用 quote 交易时段过滤(实盘)

quote对象常有trading_time或类似字段(以reference/tqsdk.objs.rst为准),表示当日各段交易时间。可在发单前判断「当前是否处于可交易时段」:

fromtqsdkimportTqApi,TqAuth,TqSim api=TqApi(TqSim(),auth=TqAuth("账户","密码"))symbol="SHFE.rb2510"quote=api.get_quote(symbol)defis_trading_time(quote):# 以文档示例实现:解析 quote.trading_time 与当前时间# 休市返回 FalsereturnTrue# 占位,必须按文档实现whileTrue:api.wait_update()ifnotis_trading_time(quote):continueifapi.is_changing(quote,"datetime"):# 仅在交易时段内跑信号pass

节假日全天无交易时,is_trading_time应持续为 False,scheduler 触发的任务也应先过这一关。

三、自建节假日列表(补充)

对已知休市日(元旦、春节等),维护holidays.txt或 CSV,格式YYYYMMDD。发单前:

fromdatetimeimportdatetimedefis_holiday(d):day=d.strftime("%Y%m%d")withopen("holidays.txt")asf:returndayin{line.strip()forlineinf}

每年更新列表;有条件的团队可接第三方交易日历,注意授权。

四、与 TqScheduler 配合

advanced/scheduler.rst里的定时任务,触发回调里第一件事应是if not is_trading_time(quote): return。不要假设「到了点就一定能成交」。

清仓类任务建议:

  • 仅在交易时段内执行
  • 若已收盘,下一可交易时段开盘再处理(按策略风险决定是否隔夜持仓)

五、回测区间含停盘日

回测按历史行情推进,停盘日可能无 tick 但仍占日历。解读回测结果时,笔数骤降可能是休市而非策略熄火。批量回测多条曲线对比时,区间应对齐。

若策略含「每日收盘平仓」,回测里要用历史时间判断该日是否有夜盘/日盘,逻辑与实盘同一函数最稳。

总结

定时任务按本地时钟触发,不会自动识别春节、国庆等休市日;TqScheduler或自写「14:55 平仓」的回调里,必须先判断「是否在交易时段、是否节假日」,再执行报单或清仓。天勤quote上的trading_time(字段名以文档为准)适合实盘过滤;另维护holidays.txt等休市表作补充。夜盘品种不能只用weekday判断「今天是否交易」。

回测按历史推进,停盘日可能无行情但日历仍前进,解读笔数骤降时要区分休市与策略熄火;「每日收盘平仓」逻辑宜与实盘共用同一is_trading_time函数。scheduler 触发 → 时段过滤 → 再执行业务,是固定顺序。

建议每年更新节假日列表;选一天已知休市日跑脚本,确认日志里无insert_order;把过滤函数与 scheduler 写进同一模块,避免一处有过滤、另一处遗漏。

FAQ

1)不同交易所节假日不同?

是,国内期货常以主要交易所日历为准,团队定规范。

2)夜盘跨日怎么算?

用 quote 的交易时段解析,不要只用date.today()

3)回测要删休市日吗?

不必删数据,信号层过滤即可。

4)国际品种?

以该品种交易所日历为准。

风险提示

本文用于交易时段技术说明,不构成投资建议。

http://www.jsqmd.com/news/953674/

相关文章:

  • 给软件工程师的MIPS指令集入门:从R/I/J三种格式看懂CPU如何‘说话’
  • TongWeb 7.x 部署后必改的5个 tongweb.xml 配置项(附端口修改、应用卸载教程)
  • 清远市2026年黄金铂金白银回收门店实测排行|本地靠谱变现商家联系方式汇总 - 余生黄金回收
  • 终极GKD订阅管理指南:告别广告困扰的完整解决方案
  • 中国人民大学考研辅导机构如何选:全院系专业覆盖与直系定向推荐 - michalwang
  • 有源电力滤波器若干关键技术解析【附仿真】
  • 从CAN 2.0到CAN FD:手把手教你用STM32H7实现车载网络升级(附CubeMX配置)
  • 别再死记硬背了!用Python模拟8253的6种工作模式,直观理解每个引脚变化
  • 别再硬编码了!用Matlab Stateflow枚举(Enum)管理状态,让代码生成更清晰
  • 从硬件视角看PCIe:BAR寄存器如何像“门牌号”一样,让CPU找到你的显卡和网卡
  • AI工具赋能课堂革命:一线教师必须掌握的7个智能教学整合实战模板
  • 中国人民公安大学考研辅导机构如何选:全院系专业覆盖与直系定向推荐 - michalwang
  • Allegro 17.2的PADS转换器深度使用:除了基本流程,这些高级选项和隐藏入口你知道吗?
  • Anthropic 把自动挖漏洞的流水线开源了,这事我看完蚌埠住了
  • 用Proteus仿真555+4017流水灯:从原理图到调频,手把手教你玩转经典电路
  • 8051单片机电池电压与剩余电量双参数数码管实时显示方案
  • 别再死记硬背了!一张表帮你搞定GPS、北斗、伽利略所有频点(附MATLAB卫星筛选脚本)
  • 告别单点故障!手把手教你用Nginx+两台TongWeb搭建高可用Java应用集群
  • 用Python搞定FEMTO-ST轴承数据集的预处理(附完整代码与避坑指南)
  • 从毕业设计到实战:手把手教你用Spark MLlib和SpringBoot搭建一个电商推荐系统(附完整源码)
  • 从B-Scan图像到地下‘CT’:手把手教你解读探地雷达数据(附Python处理示例)
  • 量子软件栈MQSS架构设计与混合计算实践
  • 文章标题:赤峰市2026年靠谱黄金白银铂金回收门店排行|同城上门回收联系方式汇总 - 余生黄金回收
  • N_m3u8DL-CLI-SimpleG:如何用免费图形界面轻松下载M3U8视频?
  • 从Simulink数据字典到C代码:一条龙搞定Stateflow枚举(Enum)的创建、关联与部署
  • Delphi7直连MySQL5.7免安装驱动包:含验证通过的libmysql.dll与dbxopenmysql50.dll及完整测试工程
  • Altium Designer PCB设计:从恼人的绿色报错到丝滑的叠层设置,新手避坑全记录
  • 从打孔卡到3D NAND:计算机存储器的‘进化史’与技术选型指南
  • 从Python到ArcGIS:我为什么又回头用ArcMap 10.7做数据可视化?一次散点图实战的深度复盘
  • 物理Transformer架构:AI与物理动力学的融合创新