news 2026/9/12 16:35:51

TradingAgents-CN 怎么配置股票基础信息每日定时同步任务?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TradingAgents-CN 怎么配置股票基础信息每日定时同步任务?

TradingAgents-CN 怎么配置股票基础信息每日定时同步任务?

【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN

在 TradingAgents-CN 中,股票基础信息(股票代码、名称、行业、地区、市值等)通过后端内置的 APScheduler 定时任务从 Tushare/AKShare/BaoStock 等数据源拉取并写入 MongoDB,供后续行情与基本面分析使用。本文的任务是:完成这个"股票基础信息每日定时同步"任务的配置、启动,并确认它按预期每天执行一次。适用环境:已能连通 MongoDB 的后端服务,依赖通过pip install -e .安装(项目依赖中包含APSchedulermotorpymongo等)。

任务的行为边界

先明确这个定时任务是怎么跑的(依据 scheduled_tasks_guide.md):

  • 任务 ID 为basics_sync_service每天执行一次(默认北京时间 06:30),而不是持续运行;
  • 应用启动后会先异步触发一次全量同步(不阻塞启动),之后按配置的时间点每日调度;
  • 默认选择 06:30 的原因是避开交易时段、数据源通常已在凌晨更新完前一交易日数据、并在用户开始使用系统前完成同步。

前置条件

依据 stock_basics_sync.md:

  1. 已正确配置 MongoDB,且能被后端连通;
  2. 设置环境变量TUSHARE_TOKEN(Tushare token,由读者自行到 Tushare 申请后填入);
  3. 安装项目依赖:
pip install -e .

数据源优先级由启动逻辑决定(见 app/main.py):TUSHARE_ENABLEDtrue(默认值)时优先顺序为tushare > akshare > baostock;Tushare 被禁用时自动使用akshare > baostock

配置每日执行时间

所有配置项在 app/core/config.py 中定义,可写入项目根目录的.env文件或系统环境变量:

参数类型默认值说明
SYNC_STOCK_BASICS_ENABLEDbooltrue是否启用每日同步任务
SYNC_STOCK_BASICS_TIMEstring"06:30"执行时间,HH:MM格式(24 小时制)
SYNC_STOCK_BASICS_CRONstringCRON 表达式,设置后优先于 TIME 生效
TIMEZONEstring"Asia/Shanghai"调度器时区

两种配置方式二选一(默认已启用,不改.env即按每天 06:30 执行):

# 方式 1:简单时间(默认) SYNC_STOCK_BASICS_ENABLED=true SYNC_STOCK_BASICS_TIME=06:30 TIMEZONE=Asia/Shanghai # 方式 2:CRON 表达式(例如 30 6 * * * 表示每日 06:30) SYNC_STOCK_BASICS_CRON=30 6 * * * TIMEZONE=Asia/Shanghai # 数据源 token(TUSHARE_TOKEN 替换为你自己的 token) TUSHARE_TOKEN=你的token

文档中给出的其他示例:SYNC_STOCK_BASICS_TIME=02:00表示改为每天凌晨 2:00 执行;SYNC_STOCK_BASICS_CRON=0 2 * * 1表示每周一凌晨 2:00 执行。

可选:初始化 MongoDB 索引

同步数据写入 MongoDB 的stock_basic_info集合(按codeupsert),同步状态记录在sync_status集合(job=stock_basics)。项目提供索引初始化脚本 scripts/setup/init_mongodb_indexes.py,为stock_basic_infocode唯一索引及查询/排序索引,为sync_statusjob唯一索引等。运行方式(使用当前环境变量连接 MongoDB):

python scripts/setup/init_mongodb_indexes.py

注意文档中的提示:若stock_basic_info中首次已存在重复code数据,唯一索引创建会失败,需要先对数据去重再建索引。

启动后端并确认任务已注册

python -m uvicorn app.main:app --reload

启动后做两件事确认定时任务已挂上:

  1. 看启动日志。调度注册时的日志(以下为文档示例输出):
[INFO] 📅 Stock basics sync scheduled daily at 06:30 (Asia/Shanghai)

若配置了 CRON,则显示Stock basics sync scheduled by CRON: <你的CRON> (Asia/Shanghai)

  1. 查调度器接口(app/routers/scheduler.py 提供):
# 查看调度器状态 GET /api/scheduler/status # 查看所有任务,确认 basics_sync_service 存在及其下次执行时间 GET /api/scheduler/jobs

前端同样可以查看:运行python web/run_web.pystreamlit run web/app.py打开 Streamlit,在侧边栏选择「🔧 系统状态」,可以看到任务是否运行中、下次执行时间与倒计时。

手动触发一次同步并核对结果

不需要等到 06:30,可以通过 API 立即触发一次全量同步来验证整条链路是否可用:

# 多数据源同步(定时任务实际调用的入口,支持自动切换数据源) POST /api/sync/multi-source/stock_basics/run # 指定优先数据源(逗号分隔) POST /api/sync/multi-source/stock_basics/run?preferred_sources=akshare,baostock # 强制执行(即使正在运行) POST /api/sync/multi-source/stock_basics/run?force=true

单数据源入口也保留着(app/routers/sync.py):POST /api/sync/stock_basics/run,同样支持force参数。

触发后查看状态:

# 查看股票基础信息同步状态 GET /api/sync/stock_basics/status

状态接口的成功判定(见 app/routers/multi_source_sync.py):返回结果中statussuccesssuccess_with_errors时接口标记为成功;failed时接口返回失败并附错误信息;若任务已在运行,返回running提示。同步执行期间的日志(文档示例):

[INFO] Stock basics sync started [INFO] Successfully fetched 5438 stocks from tushare [INFO] Stock basics sync completed: 5438 total, 0 inserted, 5438 updated

文档给出的完整执行流程示例(一次同步通常耗时 30-60 秒):

06:30:00 ─→ 任务触发 06:30:01 ─→ 检查是否已在运行(防止重复) 06:30:02 ─→ 从数据源获取股票列表(5000+ 只) 06:30:15 ─→ 获取最新交易日期 06:30:20 ─→ 获取每日基础数据(市值、ROE等) 06:30:45 ─→ 批量更新 MongoDB 06:31:00 ─→ 任务完成,状态更新为 "success"

前端「🔧 系统状态」页面上也可以直接点击「🔄 手动运行全量同步」按钮触发,等效于上述 API 调用。

调整、禁用与排查

修改时间:改.env中的SYNC_STOCK_BASICS_TIMESYNC_STOCK_BASICS_CRON,然后重启应用生效。

禁用定时任务

SYNC_STOCK_BASICS_ENABLED=false

禁用后只能手动触发同步。

排查时按文档记录的已知现象核对(stock_basics_sync.md、scheduled_tasks_guide.md):

  • Tushare 未配置:状态为failed,message 提示 token 缺失。先补齐TUSHARE_TOKEN或确认 AKShare/BaoStock 可用;
  • 当日无交易数据:脚本会回退查找最近有数据的交易日,属正常行为;
  • 任务长时间显示"运行中":可能是数据源响应慢或数据量大(5000+ 只股票)。先查日志确认任务是否真的在跑;若卡住,可重启应用或使用force=true参数强制重新执行;
  • 首次全量同步数据量大:关注日志与 MongoDB 写入速率。

限制说明

  • 定时调度只覆盖"每日一次"的基础信息同步;实时行情是另一个独立任务(每 30 秒、仅交易时段),不在本文范围内。
  • 数据写入以"亿元人民币"为单位的total_mv/circ_mv(Tushare 原始"万元"除以 1e4);pepbpe_ttmpb_mrqturnover_ratevolume_ratio保持原始数值。
  • 两篇文档对数据集合的命名不完全一致:scheduled_tasks_guide.md 写作stock_basics,stock_basics_sync.md 写作stock_basic_info;按后者描述的字段与索引脚本核对时以stock_basic_info为准。
  • 配置修改都需要重启应用后才生效,调度器不会热加载.env

【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 16:29:35

LightGBM二手车价格预测实战:高维稀疏特征与非线性衰减建模

简介&#xff1a;本资源是一份面向计算机及相关专业本科生的Python机器学习实战项目&#xff0c;聚焦二手车价格预测这一典型回归任务&#xff0c;适用于期末大作业提交、课程设计实践或算法入门训练。压缩包共19个文件&#xff0c;含9个CSV格式数据集&#xff08;如used_car_t…

作者头像 李华
网站建设 2026/9/12 16:29:17

TVS钳位电压如何影响DC-DC芯片选型与BOM成本

1. 这不是玄学&#xff0c;是电源工程师天天在算的账&#xff1a;一颗TVS怎么让整机BOM降5毛&#xff1f;你拆过电源板吗&#xff1f;尤其是带DC-DC降压模块的消费类主板——比如智能音箱主控板、车载记录仪主控、工业PLC的IO扩展模块。打开外壳&#xff0c;翻到背面&#xff0…

作者头像 李华