🚀 快速安装

复制以下命令并运行,立即安装此 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 原始英文文档,方便对照翻译。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。