首页 / 资讯中心 / 文章详情

PanWatch 交易日历与时区设计:A股休市日 AI 为什么不会瞎跑

PanWatch 交易日历与时区设计:A股休市日 AI 为什么不会瞎跑 ★ FEATURED ARTICLE
PanWatch 交易日历与时区设计A股休市日 AI 为什么不会瞎跑【免费下载链接】PanWatchPanWatch — AI stock monitoring for A-shares, HK US markets, powered by TradingAgents. Portfolio insights, real-time alerts automated reports.盯盘侠覆盖 A股/港股/美股的 AI 盯盘、持仓分析、实时提醒与自动报告。项目地址: https://gitcode.com/GitHub_Trending/pa/PanWatchPanWatch 是一款覆盖A股、港股、美股的 AI 盯盘工具它负责持仓分析、实时提醒和自动报告。但一个容易被忽略的问题——AI 定时任务如何知道今天到底开不开市——直接决定了它会不会在你国庆假期还发一堆无效通知。这篇文章带你看懂 PanWatch 的交易日历与时区设计为什么盘前计划、日终摘要、模拟盘扫描在 A股休市日会自动熄屏而交易日又绝不会漏跑。一个定时任务引发的事故想象你配置了一个每天 09:00 执行的盘前计划任务。如果它只看星期几那周六周日能拦住但 A股有法定节假日——国庆、春节、清明——全是工作日却休市。对 AI 盯盘系统来说休市日瞎跑有三宗罪白白消耗 Token让大模型分析一份根本不会变化的行情打扰用户假期里推送一堆今日盘前计划没人看也失去信任跨市场误判北京时间的周一 9 点美股其实还在凌晨按服务器本地时间判断必然错PanWatch 的答案是把时间判断拆成两层分别由不同模块负责。交易日历回答这一天开不开市核心逻辑在 trading_calendar.py 中对外只暴露两个函数is_trading_day(market, d)某个市场在某一天是否开市默认查该市场时区的今天any_market_trading_day(d)CN/HK/US任一市场在交易即返回 TrueA股用权威日历含法定节假日A股节假日安排每年不同靠猜是没用的。PanWatch 通过 akshare 拉取新浪交易日历tool_trade_date_hist_sina缓存为内存中的日期集合启动预热 每日凌晨刷新见 context_scheduler.py 中的日历刷新任务。判断顺序是精心安排的先判周末——零依赖、永远准确三个市场统一拦截再查 A股日历——日历已加载且查询日期在覆盖区间内按法定节假日精确判断其余情况——港美股、日历缺失、日期超出覆盖范围降级为只判周末降级哲学宁可多发不能漏发模块顶部的注释写得很直白拿不到日历时退回「只判周末」—— 宁可多发一条通知也不能把交易日误判为休市。少发一条是遗憾漏发一整天是事故。同时它对没有日历源保持诚实港股/美股没有等价的公开节假日日历就只判周末不假装支持节假日。日期超出日历覆盖范围比如跨年没刷新也会安全降级而不是直接报错。时区设计用市场当地时间做判断第二个常见坑是时区。PanWatch 的做法是每个市场自带时区和交易时段定义判断时一律先换算到市场当地时间。市场定义集中在 models.py市场时区交易时段A股Asia/Shanghai09:30–11:3013:00–15:00港股Asia/Hong_Kong09:30–12:0013:00–16:00美股America/New_York09:30–16:00MarketDef.is_trading_time()的判断流程是把时间换算到该市场时区先问交易日历非交易日周末/A股节假日一律 False再看当前时刻是否落在任一交易时段内注意一个巧妙的设计日历判断和时段判断是互补的不能混用。盘前计划、日终摘要这类任务本身就发生在交易时段之外如果只判断是否在交易时段它们会被永久拦死、永远不执行所以必须用是不是交易日来守卫这也是 trading_calendar.py 文件开头注释强调的重点。系统自身的时区则统一由 timezone.py 管理默认Asia/Shanghai可通过环境变量TZ覆盖避免硬编码。实战定时任务如何被拦截三层守卫分别拦截不同类型的任务① 逐只股票执行的任务——看交易时段agent_scheduler.py 在单只执行模式下每只股票先问market_def.is_trading_time()非交易时段直接跳过日志记录跳过非交易时段。② 盘前/日终类任务——看交易日历_paper_trading_scheduler.py 的盘前计划每天 09:00和日终摘要执行前都先调any_market_trading_day()周末或 A股节假日直接跳过一条通知都不发。③ 高频扫描任务——全市场休市即停模拟盘扫描每 60 秒跑一次但只要 CN/HK/US全部不在交易时段本轮扫描直接跳过——行情不动扫了也白扫。边界处理这套设计如何诚实降级场景行为日历拉取失败降级为只判周末交易日照常跑只是漏拦节假日宁可多发港美股节假日无日历源只判周末不假装精确日期超出日历覆盖范围跨年降级只判周末并记 debug 日志服务器与用户时区不同判断统一换算到市场当地时间不受影响小结把什么时候该干活交给日历PanWatch 的这套设计可以总结成三句话日历管哪天时段管几点——两个问题分开判断互不干扰一切以市场当地时间为准——A股看上海、港股看香港、美股看纽约降级永远朝多发方向——少发一条是遗憾漏发一整天是事故想深入了解实现细节可以从这几个入口读起交易日历核心src/platform/scheduling/trading_calendar.py市场与时段定义src/platform/marketdata/models.pyAgent 调度守卫src/modules/automation/agent_scheduler.py模拟盘盘前/日终任务src/modules/paper_trading/paper_trading_scheduler.py日历刷新任务src/modules/research/context_scheduler.py相关单元测试tests/test_trading_calendar.py【免费下载链接】PanWatchPanWatch — AI stock monitoring for A-shares, HK US markets, powered by TradingAgents. Portfolio insights, real-time alerts automated reports.盯盘侠覆盖 A股/港股/美股的 AI 盯盘、持仓分析、实时提醒与自动报告。项目地址: https://gitcode.com/GitHub_Trending/pa/PanWatch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站