🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx skills add https://skills.sh/aradotso/trending-skills/daily-stock-analysis
💡 提示:需要 Node.js 和 NPM
每日股票分析系统 (Daily Stock Analysis)
技能来自 ara.so — Daily 2026 Skills 合集
基于大语言模型的股票分析系统,覆盖 A 股、港股和美股市场。自动获取行情、新闻和基本面数据,生成带有买卖目标的 AI 决策看板,并通过 GitHub Actions 定时将结果推送到微信/飞书/Telegram/Discord/邮箱——零服务器成本。
功能 (What It Does)
- AI 决策看板 (AI Decision Dashboard): 每只股票的一行结论 + 精确的买入/卖出/止损价格 + 检查清单
- 多市场 (Multi-market): A 股、港股、美股 + 指数 (SPX, DJI, IXIC)
- 数据源 (Data sources): 行情使用 AkShare、Tushare、YFinance;新闻使用 Tavily/SerpAPI/Brave
- 大语言模型后端 (LLM backends): 通过 LiteLLM(统一接口)支持 Gemini、OpenAI、Claude、DeepSeek、通义千问
- 推送渠道 (Push channels): 企业微信、飞书、Telegram、Discord、钉钉、邮箱、PushPlus
- 自动化 (Automation): 使用 GitHub Actions 定时任务,无需服务器
- Web 界面 (Web UI): 持仓管理、历史记录、回测、智能体问答
- 智能体 (Agent): 支持多轮策略问答,内置 11 种策略(均线金叉、艾略特波浪等)
安装 (Installation)
方法 1:GitHub Actions(推荐,零成本)(Method 1: GitHub Actions – Recommended, Zero Cost)
步骤 1:复刻仓库 (Step 1: Fork the repository)
https://github.com/ZhuLinsen/daily_stock_analysis
步骤 2:配置密钥 (Step 2: Configure Secrets) (Settings → Secrets and variables → Actions)
必需——至少一个 LLM 密钥 (Required — at least one LLM key):
GEMINI_API_KEY # Google AI Studio(有免费额度)(Google AI Studio - free tier available)
OPENAI_API_KEY # OpenAI 或兼容接口(DeepSeek、通义千问等)(OpenAI or compatible - DeepSeek, Qwen, etc.)
OPENAI_BASE_URL # 例如 https://api.deepseek.com/v1 (e.g. https://api.deepseek.com/v1)
OPENAI_MODEL # 例如 deepseek-chat, gpt-4o (e.g. deepseek-chat, gpt-4o)
AIHUBMIX_KEY # AIHubMix(推荐,同时覆盖 Gemini+GPT+Claude+DeepSeek)(AIHubMix - recommended, covers Gemini+GPT+Claude+DeepSeek)
ANTHROPIC_API_KEY # Claude
必需——股票列表 (Required — stock list):
STOCKS # 例如 600519,300750,AAPL,TSLA,00700.HK (e.g. 600519,300750,AAPL,TSLA,00700.HK)
必需——至少一个通知渠道 (Required — at least one notification channel):
TELEGRAM_BOT_TOKEN
TELEGRAM_CHAT_ID
FEISHU_WEBHOOK_URL
WECHAT_WEBHOOK_URL
EMAIL_SENDER / EMAIL_PASSWORD / EMAIL_RECEIVERS
DISCORD_WEBHOOK_URL
步骤 3:手动触发或等待定时任务 (Step 3: Trigger manually or wait for cron)
前往 Actions → stock_analysis → Run workflow
方法 2:本地 / Docker (Method 2: Local / Docker)
git clone https://github.com/ZhuLinsen/daily_stock_analysis
cd daily_stock_analysis
cp .env.example .env
# 编辑 .env 填入您的密钥 (Edit .env with your keys)
pip install -r requirements.txt
python main.py
Docker:
docker build -t stock-analysis .
docker run --env-file .env stock-analysis
Docker Compose:
docker-compose up -d
配置 (Configuration)
.env 文件(本地)(File – Local)
# LLM - 选择一种或多种 (pick one or more)
GEMINI_API_KEY=your_gemini_key
OPENAI_API_KEY=your_openai_key
OPENAI_BASE_URL=https://api.deepseek.com/v1
OPENAI_MODEL=deepseek-chat
AIHUBMIX_KEY=your_aihubmix_key
# 股票列表(逗号分隔)(Stock list - comma-separated)
STOCKS=600519,300750,AAPL,TSLA,00700.HK
# 通知 (Notification)
TELEGRAM_BOT_TOKEN=your_bot_token
TELEGRAM_CHAT_ID=your_chat_id
# 可选设置 (Optional settings)
REPORT_TYPE=full # simple | full | brief
ANALYSIS_DELAY=10 # 股票间延迟秒数(避免限流)(seconds between stocks - avoid rate limiting)
MAX_WORKERS=3 # 并发分析线程数 (concurrent analysis threads)
SINGLE_STOCK_NOTIFY=false # 每只股票分析完成后立即推送 (push each stock immediately when done)
NEWS_MAX_AGE_DAYS=3 # 忽略早于 N 天的新闻 (ignore news older than N days)
多通道大语言模型(高级)(Multi-Channel LLM – Advanced)
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 Grouping – Send Different Stocks to Different Emails)
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 Mode)
MARKET_REVIEW=cn # cn | us | both
# cn = A 股三阶段复盘策略 (A-share three-phase review strategy)
# us = 美股机制策略(风险偏好/中性/风险规避)(US Regime Strategy - risk-on/neutral/risk-off)
# both = 两个市场 (both markets)
关键命令(命令行)(Key Commands – CLI)
# 立即运行完整分析 (Run full analysis immediately)
python main.py
# 仅分析特定股票 (Analyze specific stocks only)
STOCKS=600519,AAPL python main.py
# 运行 Web 仪表板 (Run web dashboard)
python web_app.py
# 访问地址 (Access at) http://localhost:5000
# 使用 Docker 运行(使用环境变量文件)(Run with Docker - env file)
docker run --env-file .env stock-analysis python main.py
# 运行调度模式(等待定时任务,然后运行)(Run schedule mode - waits for cron, then runs)
SCHEDULE_RUN_IMMEDIATELY=true python main.py
GitHub Actions 工作流 (GitHub Actions Workflow)
工作流文件 .github/workflows/stock_analysis.yml 按计划运行:
# 默认计划 - 在工作流文件中自定义 (Default schedule - customize in the workflow file)
on:
schedule:
- cron: '30 1 * * 1-5' # 工作日北京时间 9:30 (9:30 AM CST weekdays)
workflow_dispatch: # 手动触发 (manual trigger)
更改计划 (To change schedule): 编辑 .github/workflows/stock_analysis.yml 中的 cron 表达式。
通过 GitHub CLI 添加密钥 (To add secrets via GitHub CLI):
gh secret set GEMINI_API_KEY --body "$GEMINI_API_KEY"
gh secret set STOCKS --body "600519,300750,AAPL,TSLA"
gh secret set TELEGRAM_BOT_TOKEN --body "$TG_TOKEN"
gh secret set TELEGRAM_CHAT_ID --body "$TG_CHAT_ID"
代码示例 (Code Examples)
程序化分析(Python)(Programmatic Analysis – Python)
# 为特定股票运行分析 (Run analysis for specific stocks programmatically)
import asyncio
from analyzer import StockAnalyzer
async def analyze():
analyzer = StockAnalyzer()
# 分析单只 A 股 (Analyze a single A-share stock)
result = await analyzer.analyze_stock("600519") # 贵州茅台 (Moutai)
print(result['conclusion'])
print(result['buy_price'])
print(result['stop_loss'])
print(result['target_price'])
asyncio.run(analyze())
自定义通知集成 (Custom Notification Integration)
from notifier import NotificationManager
notifier = NotificationManager()
# 发送到 Telegram (Send to Telegram)
await notifier.send_telegram(
token=os.environ['TELEGRAM_BOT_TOKEN'],
chat_id=os.environ['TELEGRAM_CHAT_ID'],
message="📈 分析完成\n600519: 买入价 1680, 止损价 1620, 目标价 1800 (Analysis complete\n600519: BUY at 1680, SL: 1620, TP: 1800)"
)
# 发送到飞书 webhook (Send to Feishu webhook)
await notifier.send_feishu(
webhook_url=os.environ['FEISHU_WEBHOOK_URL'],
content=analysis_report
)
使用智能体 API (Using the Agent API)
import requests
# 向股票智能体询问策略问题 (Ask the stock agent a strategy question)
response = requests.post('http://localhost:5000/api/agent/chat', json={
"message": "600519 现在适合买入吗?用均线金叉策略分析 (Is 600519 suitable to buy now? Analyze with moving average crossover strategy)",
"stock_code": "600519",
"strategy": "ma_crossover" # ma_crossover, elliott_wave, chan_theory, etc.
})
print(response.json()['reply'])
回测分析准确率 (Backtest Analysis Accuracy)
import requests
# 触发某只股票的回测 (Trigger backtest for a stock)
response = requests.post('http://localhost:5000/api/backtest', json={
"stock_code": "600519",
"days": 30 # 评估过去 30 天的 AI 预测 (evaluate last 30 days of AI predictions)
})
result = response.json()
print(f"方向准确率 (Direction accuracy): {result['direction_accuracy']}%")
print(f"止盈命中率 (Take-profit hit rate): {result['tp_hit_rate']}%")
print(f"止损触发率 (Stop-loss hit rate): {result['sl_hit_rate']}%")
从图片导入股票(视觉大语言模型)(Import Stocks from Image – Vision LLM)
import requests
# 上传自选股截图供 AI 提取 (Upload screenshot of stock list for AI extraction)
with open('watchlist_screenshot.png', 'rb') as f:
response = requests.post(
'http://localhost:5000/api/stocks/import/image',
files={'image': f}
)
stocks = response.json()['extracted_stocks']
# 返回: [{"code": "600519", "name": "贵州茅台", "confidence": 0.98}, ...]
Web 仪表板功能 (Web Dashboard Features)
启动 Web 应用 (Start the web app):
python web_app.py
| 路由 (Route) | 功能 (Feature) |
|---|---|
/ |
今日分析看板 (Today’s analysis dashboard) |
/portfolio |
持仓管理、盈亏跟踪 (Holdings management, P&L tracking) |
/history |
历史分析报告(支持批量删除)(Past analysis reports – bulk delete supported) |
/backtest |
AI 预测准确率回测 (AI prediction accuracy backtest) |
/agent |
多轮策略问答 (Multi-turn strategy Q&A) |
/settings |
大语言模型通道、通知配置 (LLM channels, notification config) |
/import |
从图片/CSV/剪贴板导入股票 (Import stocks from image/CSV/clipboard) |
支持的股票格式 (Supported Stock Formats)
# A 股 (A-shares) - 6 位代码 (6-digit code)
600519 # 贵州茅台 (Moutai)
300750 # 宁德时代 (CATL)
000858 # 五粮液 (Wuliangye)
# 港股 (HK stocks) - 5 位代码 + .HK (5-digit + .HK)
00700.HK # 腾讯控股 (Tencent)
09988.HK # 阿里巴巴 (Alibaba)
# 美股 (US stocks) - 股票代码 (ticker)
AAPL
TSLA
NVDA
# 美股指数 (US indices)
SPX # 标普 500 (S&P 500)
DJI # 道琼斯 (Dow Jones)
IXIC # 纳斯达克 (NASDAQ)
内置交易规则 (Built-in Trading Rules)
| 规则 (Rule) | 配置 (Config) |
|---|---|
| 不追高 (No chasing highs) | DEVIATION_THRESHOLD=5 (%,强势趋势时自动放宽) (%, auto-relaxed for strong trend) |
| 趋势交易 (Trend trading) | 需要 MA5 > MA10 > MA20 多头排列 (MA5 > MA10 > MA20 bullish alignment required) |
| 精确目标 (Precise targets) | 每只股票的买入价、止损价、止盈价 (Buy price, stop-loss, take-profit per stock) |
| 新闻时效性 (News freshness) | NEWS_MAX_AGE_DAYS=3 (跳过过时新闻) (skip stale news) |
| 检查清单 (Checklist) | 每个条件标记: ✅ 满足 / ⚠️ 谨慎 / ❌ 不满足 (Each condition marked: ✅ Satisfied / ⚠️ Caution / ❌ Not Met) |
故障排除 (Troubleshooting)
运行分析但未收到推送 (Analysis runs but no push received):
# 检查通知配置 (Check notification config)
python -c "from notifier import test_all_channels; test_all_channels()"
# 验证密钥是否已设置(GitHub Actions)(Verify secrets are set - GitHub Actions)
gh secret list
大语言模型 API 错误 / 速率限制 (LLM API errors / rate limiting):
ANALYSIS_DELAY=15 # 增加股票间延迟 (increase delay between stocks)
MAX_WORKERS=1 # 减少并发数 (reduce concurrency)
LITELLM_FALLBACK_MODELS=gemini-1.5-flash,deepseek-chat # 添加备选模型 (add fallbacks)
AkShare 数据获取失败(A 股)(AkShare data fetch fails – A-shares):
pip install akshare --upgrade
# A 股数据需要国内网络或代理 (A-share data requires Chinese network or proxy)
YFinance 美股数据问题 (YFinance US stock data issues):
pip install yfinance --upgrade
# 美股使用 YFinance 以保持一致性 (US stocks use YFinance exclusively for consistency)
GitHub Actions 未触发 (GitHub Actions not triggering):
- 检查 Actions 是否已启用:
Settings → Actions → General → Allow all actions - 在 crontab.guru 验证 cron 语法
- 检查工作流文件是否存在:
.github/workflows/stock_analysis.yml
Web 认证问题(管理员密码)(Web auth issues – admin password):
# 如果认证被禁用后又重新启用,需要当前密码 (If auth was disabled and re-enabled, current password required)
# 通过环境变量重置 (Reset via environment variable)
WEB_ADMIN_PASSWORD=new_password
多工作进程部署认证状态 (Multi-worker deployment auth state):
# 认证开关仅影响当前进程 (Auth toggle only applies to current process)
# 必须重启所有工作进程以同步状态 (Must restart all workers to sync state)
docker-compose restart
报告类型 (Report Types)
REPORT_TYPE=simple # 简洁版:结论 + 关键价格 (Concise: conclusion + key prices only)
REPORT_TYPE=full # 完整版:所有技术面 + 基本面 + 新闻分析 (Complete: all technical + fundamental + news analysis)
REPORT_TYPE=brief # 3-5 句摘要 (3-5 sentence summary)
完整报告包括 (Full report includes):
- 一句话核心结论 (one-line core conclusion)
- 技术面分析(均线排列、筹码分布)(technical: MA alignment, chip distribution)
- 基本面(估值、增长、盈利、机构持仓)(valuation, growth, earnings, institutional holdings)
- 舆情情报(新闻情绪、社交媒体——美股)(news sentiment, social media — US stocks)
- 精确买卖点位 (precise entry/exit levels)
- 操作检查清单 (action checklist)
- 板块涨跌榜 (sector performance boards)
大语言模型优先级顺序 (LLM Priority Order)
Gemini → Anthropic → OpenAI/AIHubMix/Compatible
推荐使用 AIHubMix,一个密钥即可访问所有主流模型,无需 VPN:
AIHUBMIX_KEY=$AIHUBMIX_KEY # 覆盖 Gemini、GPT、Claude、DeepSeek (covers Gemini, GPT, Claude, DeepSeek)
# 无需 OPENAI_BASE_URL — 自动配置 (No OPENAI_BASE_URL needed — auto-configured)
📄 原始文档
完整文档(英文):
https://skills.sh/aradotso/trending-skills/daily-stock-analysis
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。

评论(0)