stock-analysis-lianghua
分析任意股票的技术指标和趋势,或修改 TradingAgentsV2 中的分析师节点。当用户需要分析某只股票、查看技术指标、获取市场趋势判断时,使用独立分析脚本;当需要新增/修改分析师节点时,参考架构模板。
分析任意股票的技术指标和趋势,或修改 TradingAgentsV2 中的分析师节点。当用户需要分析某只股票、查看技术指标、获取市场趋势判断时,使用独立分析脚本;当需要新增/修改分析师节点时,参考架构模板。
Real data. Real impact.
Growing
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
脚本位置:
.cursor/skills/stock-analysis/analyze_stock.py(项目根目录也有一份副本 analyze_stock.py)
当用户要求分析某只股票时,直接执行此脚本:
python .cursor/skills/stock-analysis/analyze_stock.py <股票代码> [选项]
| 参数 | 说明 | 默认值 |
|---|---|---|
(必填) | 股票代码,如 META, AAPL, 0700.HK, TSLA | - |
, | 分析日期,格式 YYYY-MM-DD | 今天 |
, | 回看天数 | 90 |
, | 逗号分隔的指标列表,或 | 8个核心指标 |
python .cursor/skills/stock-analysis/analyze_stock.py META python .cursor/skills/stock-analysis/analyze_stock.py AAPL --date 2025-02-20 python .cursor/skills/stock-analysis/analyze_stock.py 0700.HK --days 60 python .cursor/skills/stock-analysis/analyze_stock.py TSLA -i rsi,macd,atr,close_50_sma python .cursor/skills/stock-analysis/analyze_stock.py NVDA -i all
脚本按以下优先级获取数据,自动容灾切换:
tradingagents/dataflows/data_cache/ 中已有的 CSV)成功获取的数据会自动缓存到
data_cache/ 目录。
脚本内置的分析逻辑对应
market_analyst.py 的 prompt:
close_50_sma, close_200_sma, close_10_ema, macd, macds, macdh, rsi, boll, boll_ub, boll_lb, atr, vwma
yfinance, stockstats, pandas, requests
tradingagents/ ├── agents/analysts/ # 分析师节点 │ ├── market_analyst.py # 市场/技术分析 │ ├── fundamentals_analyst.py # 基本面分析 │ ├── news_analyst.py # 新闻分析 │ └── social_media_analyst.py # 社交媒体情绪分析 ├── dataflows/ │ └── interface.py # 数据接口(工具函数定义) └── graph/ └── trading_graph.py # LangGraph 交易图
每个分析师遵循统一模式:
create_xxx_analyst(llm, toolkit) -> node_function
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.messages import HumanMessage from ...dataflows.interface import get_market_typedef create_xxx_analyst(llm, toolkit): def xxx_analyst_node(state): current_date = state["trade_date"] ticker = state["company_of_interest"] market_type = get_market_type() # "CN" 或 "US"
# 1. 根据 market_type 设置 system_message 和 tools if market_type == "CN": system_message = "..." tools = [toolkit.cn_tool_1, toolkit.cn_tool_2] else: system_message = "..." if toolkit.config["online_tools"]: tools = [toolkit.online_tool] else: tools = [toolkit.offline_tool_1, toolkit.offline_tool_2] # 2. 构建 prompt(CN/US 可分别定义或共用) prompt = ChatPromptTemplate.from_messages([ ("system", "你是一个有帮助的AI助手,与其他助手协作完成任务。" "使用提供的工具来推进回答问题。如果你无法完全回答,没关系;" "其他拥有不同工具的助手会在你停下的地方继续帮忙。" "你可以使用以下工具:{tool_names}\n{system_message}" "供参考,当前日期是 {current_date}。我们正在分析的公司是 {ticker}"), MessagesPlaceholder(variable_name="messages"), ]) prompt = prompt.partial( system_message=system_message, tool_names=", ".join([t.name for t in tools]), current_date=current_date, ticker=ticker, ) # 3. 调用 LLM chain = prompt | llm.bind_tools(tools) messages = state["messages"].copy() # 工具调用次数限制(防止无限循环) tool_call_count = sum( 1 for msg in messages if hasattr(msg, 'tool_calls') and msg.tool_calls ) if tool_call_count >= 3: final_prompt = ChatPromptTemplate.from_messages([ ("system", system_message + "\n\n重要提醒:请基于已获取的信息生成最终报告,不要再调用任何工具。"), MessagesPlaceholder(variable_name="messages"), ]) result = (final_prompt | llm).invoke(messages) else: if not (messages and getattr(messages[-1], "role", None) == "user"): messages.append(HumanMessage(content=f"请分析{ticker}的相关信息,并调用相关工具获取数据。")) result = chain.invoke(messages) # 4. 返回结果(key 与 state schema 对应) return { "messages": [result], "xxx_report": result.content, } return xxx_analyst_node
| 分析师 | 返回 key | 说明 |
|---|---|---|
| market_analyst | | 技术指标与趋势分析 |
| fundamentals_analyst | | 财务与基本面分析 |
| news_analyst | | 新闻与公告分析 |
| social_media_analyst | | 社交媒体情绪分析 |
指标名称必须与以下精确匹配,否则工具调用会失败:
| 类别 | 指标 | 说明 |
|---|---|---|
| 移动平均线 | | 50日简单移动平均线 |
| 200日简单移动平均线 | |
| 10日指数移动平均线 | |
| MACD | | MACD 值 |
| MACD 信号线 | |
| MACD 柱状图 | |
| 动量 | | 相对强弱指数 |
| 波动率 | / / | 布林带(中/上/下轨) |
| 平均真实波幅 | |
| 成交量 | | 成交量加权移动平均线 |
选择指标时最多 8 个,避免冗余(如不要同时选 rsi 和 stochrsi)。
| 分析师 | A股(CN)工具 | 美股(US)在线工具 | 美股离线工具 |
|---|---|---|---|
| 市场分析 | / | | |
/ | | | |
| 基本面 | | | / |
/ / | |||
| |||
| 新闻 | / | / | / / |
| 社交媒体 | | | / |
工具函数定义在
tradingagents/dataflows/interface.py。
通过
get_market_type() 获取,返回 "CN" 或 "US"。配置来源于 tradingagents/dataflows/config.py。
interface.py 的 stockstats 工具中添加指标定义market_analyst.py 的 system_message 中添加指标描述tradingagents/agents/analysts/ 创建新文件trading_graph.py 中注册新节点所有分析师
system_message 末尾已要求附加 Markdown 表格总结。如需修改格式,调整 system_message 的指令即可。
online_tools 配置决定使用在线/离线数据源system_message 统一用中文编写No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.