零服务器每天 18 点自动复盘,6.6 万 Star 的 daily_stock_analysis 怎样防止 AI 乱喊单

发布时间:2026/10/13 11:16:07

零服务器每天 18 点自动复盘,6.6 万 Star 的 daily_stock_analysis 怎样防止 AI 乱喊单 零服务器每天 18 点自动复盘6.6 万 Star 的 daily_stock_analysis 怎样防止 AI 乱喊单声明本文只讨论开源项目的工程设计文中所有输出均为演示数据不构成任何投资建议。股市有风险投资需谨慎。“让大模型帮我看盘”是很多人试过的事把股票代码丢给聊天机器人得到一段看似专业、实则飘忽的分析。真正难的不是让 AI 开口而是让它每天稳定地、基于真实数据、带着约束地开口。GitHub 上的 daily_stock_analysis仓库 ZhuLinsen/daily_stock_analysis以下简称 DSA把这件事做成了一条工程化流水线每个交易日收盘后自动拉取自选股的行情、新闻和基本面交给大模型生成一份“决策仪表盘”再推送到企业微信、飞书、Telegram、邮箱等渠道。项目用 Python 编写MIT 协议目前已有约 6.6 万 Star覆盖 A 股、港股、美股、日股、韩股和台股。这篇文章不评价它“准不准”而是拆解三个让它能长期稳定跑下去的工程设计数据源降级链、交易日判断、交易纪律约束。这三点对任何想做“AI 定时数据任务”的人都有参考价值。一、它到底每天在做什么一次完整的运行大致分为五步1.交易日判断按每只股票所属市场的交易日历决定今天是否需要分析2.拉取行情日 K、实时行情、技术指标、筹码分布等按数据源优先级逐个尝试3.检索新闻与舆情通过搜索服务获取公告、新闻和事件4.大模型分析把以上数据组装成提示词由大模型输出结论、评分、买卖点位、风险警报和操作检查清单5.推送决策仪表盘汇总成一份报告推送到配置的通知渠道。项目结构也很清晰目录职责main.py主程序入口支持单次运行、定时、Web 服务等模式src/核心业务分析器、配置、消息推送data_provider/多数据源适配器api/与apps/dsa-web/FastAPI 后端与 React 前端工作台bot/机器人交互.github/workflows/GitHub Actions 定时任务二、5 分钟零服务器部署GitHub Actions 方案DSA 最受欢迎的一点是不需要自己买服务器Fork 仓库后用 GitHub Actions 定时运行即可。第一步Fork 仓库。第二步在Settings → Secrets and variables → Actions中添加 Secrets三类配置至少各填一个类别Secret 示例说明大模型GEMINI_API_KEY、ANTHROPIC_API_KEY、OPENAI_API_KEYOPENAI_BASE_URLOpenAI 兼容接口可接 DeepSeek、通义千问等通知渠道WECHAT_WEBHOOK_URL、FEISHU_WEBHOOK_URL、TELEGRAM_BOT_TOKENTELEGRAM_CHAT_ID、EMAIL_SENDEREMAIL_PASSWORD可同时配置多个自选股STOCK_LIST如600519,hk00700,AAPL,2330.TW新闻搜索如 SerpAPI、Tavily、博查、自建 SearXNG不是必填项但会明显影响舆情和催化因素的质量建议至少配一个。第三步在 Actions 页启用工作流然后手动运行一次“每日股票分析”验证配置。之后它会在每个工作日北京时间 18:00 自动执行对应的 cron 是 UTC 时间schedule: - cron: 0 10 * * 1-5 # UTC 10:00 北京时间 18:00周一到周五如果更习惯本地或 Docker 运行也只需几条命令git clone https://github.com/ZhuLinsen/daily_stock_analysis.git cd daily_stock_analysis pip install -r requirements.txt cp .env.example .env # 填写模型、通知渠道与自选股 python main.py --dry-run # 只拉数据不调用大模型 python main.py --stocks 600519,AAPL # 临时指定股票 python main.py --market-review # 只做大盘复盘 python main.py --schedule # 本地定时模式 python main.py --webui # 启动 Web 工作台默认 8000 端口三、设计一数据源不是“一个”而是一条降级链免费行情接口最大的问题是不稳定限流、改版、网络抖动是常态。DSA 的做法是把每个数据源包装成适配器并给它们分配优先级数字数字越小越先尝试失败后自动尝试下一个全部失败才算真正失败。以普通 A 股日 K 为例配置了 TickFlow 的 API Key 后它的默认优先级是 2腾讯直连的默认优先级是 5作为通用链路的最终兜底中间还可以插入 AkShare、Tushare、Baostock 等来源。实时行情则用另一个变量单独控制顺序REALTIME_SOURCE_PRIORITYtencent,akshare_sina,efinance,akshare_em FUTU_HK_REALTIME_SOURCE_PRIORITYfutu,longbridge,akshare,yfinance还有两个细节值得借鉴指数走独立的固定链已登记的沪深指数不参与通用优先级排序固定按腾讯、AkShare、TickFlow、YFinance 的顺序降级避免个股的配置影响指数数据。辅助能力一律失败放行基本面、筹码分布、龙虎榜这类“锦上添花”的数据出错只记录日志、标记为不支持绝不阻断技术面和新闻这条主链路。基本面阶段默认有 8 秒的软超时预算超时就降级继续。这种“主链路必须成功、辅助数据尽力而为”的分层是定时任务能长期无人值守的关键。四、设计二先问“今天开不开市”再干活一个每天定时跑的任务如果不懂交易日历就会在节假日白白调用大模型、推送一份基于旧数据的报告。DSA 用exchange-calendars为每个市场维护各自的交易日历含节假日规则是混合持仓时每只股票只在其所属市场开市的日子分析休市市场当天跳过所有相关市场都休市时整体跳过不启动流水线也不推送判断“最新可复用交易日”时按市场本地时区计算A 股用上海时区、美股用纽约时区而不是服务器的自然日若最近一个交易日的数据本地已存在就跳过重复抓取实现断点续传。GitHub Actions 中还可以用两个开关控制非交易日行为仓库变量TRADING_DAY_CHECK_ENABLED默认开启和手动触发时的force_run参数。手动运行时还能选择full、market-only、stocks-only三种模式。五、设计三给大模型套上“交易纪律”让 AI 直接给买卖点最大的风险是它会追涨。DSA 在提示词之外用规则给分析结果加了几道约束最典型的是乖离率阈值乖离率衡量现价偏离均线如 MA5的程度计算方式为(现价 - MA5) / MA5 × 100%默认阈值BIAS_THRESHOLD5.0超过即提示“不追高”对均线多头排列的强势股阈值自动放宽到 1.5 倍避免把正常的强势误判为过热盘中开启ENABLE_REALTIME_TECHNICAL_INDICATORS时会用实时价计算 MA5、MA10、MA20 和多头排列否则用昨日收盘价。决策仪表盘最终呈现的是“一句话结论 评分 买卖点位 风险警报 利好催化 操作检查清单”README 中的示例大致是这样的格式 2026-02-08 决策仪表盘 共分析3只股票 | 买入:0 观望:2 卖出:1 分析结果摘要 ⚪ 中钨高新(000657): 观望 | 评分 65 | 看多 ⚪ 永鼎股份(600105): 观望 | 评分 48 | 震荡 新莱应材(300260): 卖出 | 评分 35 | 看空注意示例中“观望”远多于“买入”。规则约束的意义恰恰在于让输出更克制而不是更刺激。六、动手实验用 120 行 Python 复刻这三个机制本文配套脚本practice/demo_dsa_pipeline.py只用 Python 标准库离线就能运行。它用随机游走生成模拟行情复刻了上面三个设计带优先级的数据源降级、按市场的交易日判断、MA5 乖离率纪律。为便于演示三个模拟数据源对所有市场通用真实项目中不同市场有各自的数据源链。核心的降级逻辑只有几行class DataManager: def __init__(self, sources): self.sources sorted(sources, keylambda s: s.priority) def fetch(self, code): errors [] for src in self.sources: try: data src.daily_klines(code) return data, src.name, errors except DataFetchError as e: errors.append(str(e)) raise DataFetchError(全部数据源失败: ; .join(errors))纪律校验同样直白def discipline(closes): price closes[-1] ma5, ma10, ma20 ma(closes, 5), ma(closes, 10), ma(closes, 20) bias (price - ma5) / ma5 * 100 bullish ma5 ma10 ma20 threshold BIAS_THRESHOLD * (1.5 if bullish else 1.0) ...运行python demo_dsa_pipeline.py的输出模拟日期为港股重阳节补假的 2026-10-19 2026-10-19 决策仪表盘演示数据不构成投资建议 600519 数据源AkShare降级: TickFlow: 连接被远端关闭 现价 105.39 | MA5 104.63 | 乖离率 0.72% (阈值 5.0%) - 观望 000657 数据源TickFlow 现价 125.98 | MA5 125.29 | 乖离率 0.55% (阈值 7.5%多头排列放宽) - 关注多头排列未偏离均线 300260 数据源TickFlow 现价 117.27 | MA5 105.28 | 乖离率 11.39% (阈值 7.5%多头排列放宽) - 观望乖离过大不追高 ⏭ hk00700 hk 市场今日休市跳过 AAPL 数据源TickFlow 现价 114.07 | MA5 112.98 | 乖离率 0.96% (阈值 7.5%多头排列放宽) - 关注多头排列未偏离均线可以看到第一只股票的首选数据源失败后自动降级到下一个结果中保留了降级原因第三只股票尾盘急拉乖离率超过放宽后的 7.5% 阈值被标记为“不追高”港股当天休市被直接跳过不浪费一次模型调用。七、模型层用 LiteLLM 统一各家大模型DSA 的模型调用统一走 LiteLLM主模型用provider/model的格式指定并支持备选模型LITELLM_MODELgemini/gemini-3.1-pro-preview LITELLM_FALLBACK_MODELSopenai/deepseek-chat # 示例值按自己开通的模型填写这样主模型限流或报错时可以自动切到备选模型。Agent 问股功能在 Web 的/chat页面提供支持均线金叉、缠论、波浪理论、多头趋势、热点题材、事件驱动等 15 种内置策略的多轮追问也支持上传截图让视觉模型识别股票代码加入自选。八、落地排坑清单1.筹码分布接口不稳定GitHub Actions 的工作流默认关闭筹码分析如确有需要在仓库变量中显式设置ENABLE_CHIP_DISTRIBUTIONtrue并接受它偶尔失败。2.免费数据源会限流长期批量运行建议配置 Tushare、TickFlow、Longbridge 等需要 token 的数据源东财接口频繁断开时可开启ENABLE_EASTMONEY_PATCHtrue。3.cron 是 UTC 时间改推送时间时记得减 8 小时北京时间 9:30 对应30 1 * * 1-5。4.节假日手动运行要加force_run否则交易日检查会让任务直接跳过看起来像“没反应”。5.公开仓库注意隐私Fork 后的仓库默认公开自选股写在 Secrets 里而不是代码里Actions 运行日志也可能包含股票代码。6.大模型费用要心里有数自选股数量乘以每天一次的分析调用加上新闻检索月度费用需提前估算可先用--dry-run验证数据链路。7.它是辅助不是决策者项目 README 明确声明不构成投资建议作者不对使用产生的损失负责。把它当作复盘的第二视角而不是下单的依据。九、总结DSA 的价值不在于“AI 会炒股”而在于它把一件重复的事做成了可靠的工程数据源有降级链辅助数据失败放行任务懂交易日历模型输出受规则约束部署只需一个 GitHub 账号。这套“定时任务 多源数据 大模型 规则护栏 多渠道推送”的骨架换成舆情监控、竞品追踪、运维日报同样适用。如果你每天都在花时间做机械的筛选和记录不妨 Fork 一份试试但请记住最后那一下判断仍然得由你自己来做。在线实战体验本文配套免安装的云端 Linux 交互式实验环境与终端操作可在 边学边练平台 (https://www.skillup.host/) 直接体验运行验证。本文首发于边学边练技术中台零服务器每天 18 点自动复盘6.6 万 Star 的 daily_stock_analysis 怎样防止 AI 乱喊单_边学边练
延伸阅读

更多相关文章

2026/10/13 11:16:07

用UTF-8彻底搞懂编码与乱码:从字节原理到项目排查实战

做技术这些年,我处理过的乱码问题少说也有几十次,从网页上突然冒出来的“锟斤拷”,到数据库里整片整片的问号,最后追根溯源,十有八九都绕不开“UTF-8”这三个字。UTF-8这套编码系统,几乎每个开发者每天都在…

2026/10/13 11:16:07

C#与OpenCvSharp移动物体识别追踪实战:检测、追踪与避坑指南

简介:这是一份基于C#与OpenCVSharp实现的移动物体识别追踪完整源码实例,适合有基础C#认知、希望入门计算机视觉或需要实际项目参考的开发者。实例覆盖背景建模、运动目标检测、轮廓提取与TrackerCSRT/KCF追踪等核心环节,并配有可直接运行的工…

2026/10/13 11:16:07

极简生活美学:打造清欢生活的五个维度

1. 生活美学的本质探索"心有清欢"这个说法最早可以追溯到苏轼《浣溪沙》中的名句"人间有味是清欢",描绘的是一种淡泊宁静的生活态度。在现代语境下,它代表着一种不追求物质堆砌、注重精神愉悦的生活方式。这种生活哲学与当下盛行的&…

2026/10/13 12:16:24

光储充换电站分时电价与用户负荷互动双层优化模型及Matlab复现

光储充换电站这个概念最近两年有多热,看看知网就明白了——尤其是“分时电价”和“用户负荷”两个词,几乎成了这类论文标题的流量密码。但真正动手复现过的人都知道,大多数公开代码只给你一张固定电价表去调度,用户完全是被动接收…

2026/10/13 12:16:24

六款Flask开源项目助力后台管理、人脸识别与自动化运维

如果你也在用 Flask 搭后台、做算法服务或者搞自动化运维,应该会有同感:框架本身很轻,写起业务来确实爽,但到了“要权限、要人脸识别、要批量跑任务”这种阶段,靠一个 main.py 从头手搓,工作量会突然爆炸。…

2026/10/13 12:16:24

九键字母组合的DFS与回溯:从递归到剪枝的算法思维

1. 不只是LeetCode:九键字母组合为什么值得深入拆解如果你刷过算法题,大概率见过这道经典题:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合,数字到字母的映射跟电话九宫格一致。比如输入 "23"…

2026/10/13 12:16:24

考虑分时电价与用户负荷互动的光储充换电站优化模型解析

1. 项目背景与实际价值这两年新能源圈子里最卷的赛道之一,就是光储充换电站。光伏、储能、充电桩、换电柜凑到同一个场站里,看起来是"全家桶",实际上运营起来远比想象中复杂。最让我头疼的问题在于:光伏出力看天吃饭&am…

2026/10/13 12:16:24

Windows环境下SonarQube与Sonar Scanner代码质量平台搭建实战

接手过不少代码质量相关的活儿,但真正让我觉得“这玩意儿不装不行”的,还是团队被线上故障逼到墙角的那一次。一个看似不起眼的小改动,因为缺少判空,直接让核心服务在高峰期挂了。事后排查,代码里其实早就有坏味道&…

2026/10/13 12:11:24

哈工大编译原理期末复习完整笔记:从DFA到中间代码全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 5:19:27

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/12 12:01:26

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/12 12:54:07

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/13 0:04:41

基于Triton部署YOLO目标检测:从训练脚本到线上服务

简介:这份资源面向希望将目标检测模型落地到生产环境的深度学习开发者与算法工程师,聚焦于用 Triton Inference Server 部署 YOLOv9 的完整实战方案,解决从训练权重到线上推理服务之间的工程化难题。压缩包共 16 个文件,约 886KB&…

2026/10/13 0:04:41

手把手教你云端部署Qwen-Image-2.1:从GPU选型到在线文生图服务

Qwen-Image-2.1 这个开源的图像生成模型,最近在内容创作和 AI 应用圈子里热度相当高。它属于通义 Qwen 系列里的视觉生成分支,让我眼前一亮的是它对中文长文本的理解能力——以前用那些老方案生成带中文文字的图,十个里九个是“乱码印刷体”&…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑