大模型应用
需要零服务器定时做 A股/港股/美股 LLM…
适用于自动获取行情、新闻和基本面,生成 AI 买卖/止损/目标价,并推送到微信/飞书/Telegram/Discord/邮件的股票分析场景。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
需要零服务器定时做 A股/港股/美股 L特定
解决思路
- Fork 仓库 `https://github.com/ZhuLinsen/daily_stock_analysis`。
- 在 GitHub 仓库的 `Settings → Secrets and variables → Actions` 配置 Secrets。
- 至少配置一个 LLM key:`GEMINI_API_KEY`(Google AI Studio,有免费层)。
- 如使用 OpenAI 或兼容服务,配置 `OPENAI_API_KEY`。
- 如使用兼容服务,配置 `OPENAI_BASE_URL`,例如 `https://api.deepseek.com/v1`。
- 配置 `OPENAI_MODEL`,例如 `deepseek-chat`、`gpt-4o`。
- 可配置 `AIHUBMIX_KEY`(推荐,覆盖 Gemini+GPT+Claude+DeepSeek)。
- 可配置 `ANTHROPIC_API_KEY` 使用 Claude。
- 配置股票列表 `STOCKS`,例如 `600519,300750,AAPL,TSLA,00700.HK`。
- 至少配置一个通知渠道:`TELEGRAM_BOT_TOKEN`、`TELEGRAM_CHAT_ID`、`FEISHU_WEBHOOK_URL`、`WECHAT_WEBHOOK_URL`、`EMAIL_SENDER/EMAIL_PASSWORD/EMAIL_RECEIVERS`、`DISCORD_WEBHOOK_URL`。
- 配置后进入 `Actions → stock_analysis → Run workflow` 手动触发,或等待 cron。
- 本地安装:`git clone https://github.com/ZhuLinsen/daily_stock_analysis`。
- 进入目录:`cd daily_stock_analysis`。
- 复制环境文件:`cp .env.example .env`。
- 编辑 `.env` 填入 keys。
- 安装依赖:`pip install -r requirements.txt`。
- 运行分析:`python main.py`。
- Docker 构建:`docker build -t stock-analysis .`。
- Docker 运行:`docker run --env-file .env stock-analysis`。
- Docker Compose 运行:`docker-compose up -d`。
- 本地 `.env` 中配置 LLM,选择一个或多个:`GEMINI_API_KEY`、`OPENAI_API_KEY`、`OPENAI_BASE_URL`、`OPENAI_MODEL`、`AIHUBMIX_KEY`。
- 本地 `.env` 中配置股票列表:`STOCKS=600519,300750,AAPL,TSLA,00700.HK`。
- 本地 `.env` 中配置通知:`TELEGRAM_BOT_TOKEN=your_bot_token`、`TELEGRAM_CHAT_ID=your_chat_id`。
- 可选设置 `REPORT_TYPE=full`,可取 `simple | full | brief`。
- 可选设置 `ANALYSIS_DELAY=10`,每只股票间隔秒数,避免限流。
- 可选设置 `MAX_WORKERS=3`,并发分析线程数。
- 可选设置 `SINGLE_STOCK_NOTIFY=false`,是否每只股票完成后立即推送。
- 可选设置 `NEWS_MAX_AGE_DAYS=3`,忽略超过 N 天的新闻。
- 多通道 LLM 高级配置:`LLM_CHANNELS=gemini,deepseek,claude`。
- 配置 `LLM_GEMINI_PROTOCOL=google`。
- 配置 `LLM_GEMINI_API_KEY=your_key`。
- 配置 `LLM_GEMINI_MODELS=gemini-2.0-flash,gemini-1.5-pro`。
- 配置 `LLM_GEMINI_ENABLED=true`。
- 配置 `LLM_DEEPSEEK_PROTOCOL=openai`。
- 配置 `LLM_DEEPSEEK_BASE_URL=https://api.deepseek.com/v1`。
- 配置 `LLM_DEEPSEEK_API_KEY=your_key`。
- 配置 `LLM_DEEPSEEK_MODELS=deepseek-chat`。
- 配置 `LLM_DEEPSEEK_ENABLED=true`。
- 股票分组发送到不同邮箱:`STOCK_GROUP_1=600519,300750,000858`、`EMAIL_GROUP_1=investor1@example.com`。
- 股票分组发送到不同邮箱:`STOCK_GROUP_2=AAPL,TSLA,NVDA`、`EMAIL_GROUP_2=investor2@example.com`。
- 市场复盘模式 `MARKET_REVIEW=cn`,使用 A 股三段复盘策略。
- 市场复盘模式 `MARKET_REVIEW=us`,使用 US Regime Strategy(risk-on/neutral/risk-off)。
- 市场复盘模式 `MARKET_REVIEW=both`,同时复盘 cn 与 us 市场。
- CLI 立即全量分析:`python main.py`。
- CLI 仅分析指定股票:`STOCKS=600519,AAPL python main.py`。
- 启动 Web 仪表盘:`python web_app.py`,访问 `http://localhost:5000`。
- Docker 中运行 CLI:`docker run --env-file .env stock-analysis python main.py`。
- 调度模式并立即运行:`SCHEDULE_RUN_IMMEDIATELY=true python main.py`。
- GitHub Actions workflow 文件为 `.github/workflows/stock_analysis.yml`,按 schedule 运行。
- 默认计划:`cron: '30 1 * * 1-5'`,即 UTC+8 工作日 9:30。
- `workflow_dispatch` 支持手动触发。
- 修改计划:编辑 `.github/workflows/stock_analysis.yml` 中的 cron 表达式。
- 用 GitHub CLI 添加 Secrets:`gh secret set GEMINI_API_KEY --body "$GEMINI_API_KEY"`。
- 用 GitHub CLI 添加股票列表:`gh secret set STOCKS --body "600519,300750,AAPL,TSLA"`。
- 用 GitHub CLI 添加 Telegram token:`gh secret set TELEGRAM_BOT_TOKEN --body "$TG_TOKEN"`。
- 用 GitHub CLI 添加 Telegram chat id:`gh secret set TELEGRAM_CHAT_ID --body "$TG_CHAT_ID"`。
- Python 编程分析:`import asyncio`、`from analyzer import StockAnalyzer`。
- 创建分析器:`analyzer = StockAnalyzer()`。
- 分析单只 A 股:`result = await analyzer.analyze_stock("600519")`。
- 打印结果字段:`result['conclusion']`、`result['buy_price']`、`result['stop_loss']`、`result['target_price']`。
- 执行异步入口:`asyncio.run(analyze())`。
- 自定义通知:`from notifier import NotificationManager`、`notifier = NotificationManager()`。
- 发送 Telegram:`await notifier.send_telegram(token=os.environ['TELEGRAM_BOT_TOKEN'], chat_id=os.environ['TELEGRAM_CHAT_ID'], message="...")`。
- 发送飞书 webhook:`await notifier.send_feishu(webhook_url=os.environ['FEISHU_WEBHOOK_URL'], content=analysis_report)`。
- 调用 Agent API:`requests.post('http://localhost:5000/api/agent/chat', json={'message': '600519现在适合买入吗?用均线金叉策略分析', 'stock_code': '600519', 'strategy': 'ma_crossover'})`。
- Agent 策略包括 `ma_crossover`、`elliott_wave`、`chan_theory` 等。
- 读取 Agent 回复:`response.json()['reply']`。
- 回测 AI 准确率:`requests.post('http://localhost:5000/api/backtest', json={'stock_code': '600519', 'days': 30})`。
- 读取回测结果:`result['direction_accuracy']`、`result['tp_hit_rate']`、`result['sl_hit_rate']`。
- 从图片导入股票:`requests.post('http://localhost:5000/api/stocks/import/image', files={'image': f})`。
- 读取导入结果:`response.json()['extracted_stocks']`,返回 `code`、`name`、`confidence`。
- Web Dashboard 路由 `/` 为今日分析仪表盘。
- Web Dashboard 路由 `/portfolio` 管理持仓和盈亏跟踪。
- Web Dashboard 路由 `/history` 查看历史分析报告,支持批量删除。
- Web Dashboard 路由 `/backtest` 做 AI 预测准确率回测。
- Web Dashboard 路由 `/agent` 做多轮策略问答。
- Web Dashboard 路由 `/settings` 配置 LLM 通道和通知。
- Web Dashboard 路由 `/import` 从图片/CSV/剪贴板导入股票。
- 支持 A 股格式:6 位代码,如 `600519`、`300750`、`000858`。
- 支持港股格式:5 位代码 + `.HK`,如 `00700.HK`、`09988.HK`。
- 支持美股格式:ticker,如 `AAPL`、`TSLA`、`NVDA`。
- 支持美股指数:`SPX`、`DJI`、`IXIC`。
- 内置规则:不追高,`DEVIATION_THRESHOLD=5`(%),强趋势自动放宽。
- 内置规则:趋势交易,要求 `MA5 > MA10 > MA20` 多头排列。
- 内置规则:每只股票给出精确买入价、止损、止盈。
- 内置规则:新闻新鲜度 `NEWS_MAX_AGE_DAYS=3`,跳过过期新闻。
- 内置规则:操作检查清单每项标记 ✅ 满足 / ⚠️ 谨慎 / ❌ 不满足。
- 排查无推送:`python -c 'from notifier import test_all_channels; test_all_channels()'`。
- 排查 Secrets:`gh secret list`。
- LLM API 错误/限流:增大 `ANALYSIS_DELAY=15`。
- LLM API 错误/限流:降低并发 `MAX_WORKERS=1`。
- LLM API 错误/限流:添加回退模型 `LITELLM_FALLBACK_MODELS=gemini-1.5-flash,deepseek-chat`。
- AkShare A 股抓取失败:`pip install akshare --upgrade`;A 股数据需要中国网络或代理。
- YFinance 美股数据问题:`pip install yfinance --upgrade`;美股统一用 YFinance。
- GitHub Actions 不触发:检查 `Settings → Actions → General → Allow all actions`。
- GitHub Actions 不触发:用 crontab.guru 验证 cron 语法。
- GitHub Actions 不触发:检查 `.github/workflows/stock_analysis.yml` 存在。
- Web 管理员密码问题:用环境变量 `WEB_ADMIN_PASSWORD=new_password` 重置。
- 多 worker 部署认证状态:执行 `docker-compose restart` 重启所有 worker 同步。
- 报告类型 `REPORT_TYPE=simple`:仅结论 + 关键价格。
- 报告类型 `REPORT_TYPE=full`:完整技术 + 基本面 + 新闻分析。
- 报告类型 `REPORT_TYPE=brief`:3-5 句摘要。
- Full 报告包含:一句话核心结论。
- Full 报告包含:技术面分析(均线排列、筹码分布)。
- Full 报告包含:基本面(估值、增长、盈利、机构持仓)。
- Full 报告包含:舆情情报(新闻情绪、社交媒体,美股)。
- Full 报告包含:精确买卖点位。
- Full 报告包含:操作检查清单。
- Full 报告包含:板块涨跌榜。
- LLM 优先级:Gemini → Anthropic → OpenAI/AIHubMix/Compatible。
- AIHubMix 推荐:单 key 访问主流模型且无需 VPN,设置 `AIHUBMIX_KEY=$AIHUBMIX_KEY`,覆盖 Gemini/GPT/Claude/DeepSeek,无需 `OPENAI_BASE_URL`,自动配置。
- 数据源:行情用 AkShare、Tushare、YFinance;新闻用 Tavily/SerpAPI/Brave。
- LLM 后端:Gemini、OpenAI、Claude、DeepSeek、Qwen,通过 LiteLLM 统一接入。
- Agent 支持多轮策略问答,内置 11 种策略(均线交叉、艾略特波浪等)。
适用边界 · 注意事项
- 不适合直接用于真实下单交易或保证收益;系统只生成分析和推送,投资决策和风险需自行判断。
- 无法配置 LLM API key、通知 webhook、GitHub Actions/服务器或第三方数据源账号时不要用。
- A 股 AkShare 数据需要中国网络或代理;无相应网络环境时 A 股抓取可能失败。