Stock Quote Skill
Real-time stock price and fundamental data retrieval skill.
Quick Start
CODEBLOCK0
Output Fields
| Field | Description |
|---|
| price | Current market price |
| change |
Price change from previous close |
| change_percent | Percentage change |
| previous_close | Previous trading day's close |
| day
high / daylow | Today's trading range |
| volume | Trading volume |
| market_cap | Market capitalization |
| pe_ratio | Trailing P/E ratio |
| week
52high / week
52low | 52-week range |
| dividend_yield | Dividend yield (if applicable) |
Data Sources
| Source | Priority | API Key | Coverage | Notes |
|---|
| Stooq | 1st (auto) | ❌ No | US stocks | Free, delayed EOD prices |
| yfinance |
2nd | ❌ No | Global | Rate limited (~2000/day) |
|
FMP | 3rd | ⚠️ Demo | Global | Limited demo data |
|
Web | 4th | ❌ No | Yahoo only | HTML scraping |
Auto mode (default): Stooq → yfinance → FMP → Web scrape
Integration Examples
Update Portfolio Holdings
CODEBLOCK1
Check Trading Rules Compliance
CODEBLOCK2
Daily Heartbeat Update
Add to HEARTBEAT.md:
CODEBLOCK3
Error Handling
- - Network failures → Returns error field with message
- Invalid symbol → Returns error: "No data found"
- Market closed → Returns last traded price with timestamp
Always check for 'error' field in results before using price data.
Dependencies
CODEBLOCK4
Usage with Other Skills
- - stock-advisor: Provides price data for analysis
- trading-supervisor: Validates prices against trading rules
- elite-memory: Updates portfolio valuations in MEMORY.md
Example Output
CODEBLOCK5
股票报价技能
实时股票价格和基本面数据检索技能。
快速开始
bash
单只股票(使用Stooq - 免费,无需密钥)
python ~/.openclaw/skills/stock-quote/scripts/quote.py NVDA
多只股票
python ~/.openclaw/skills/stock-quote/scripts/quote.py NVDA TSLA BABA ORCL
JSON输出(用于程序化使用)
python ~/.openclaw/skills/stock-quote/scripts/quote.py NVDA TSLA --json
强制指定数据源
python ~/.openclaw/skills/stock-quote/scripts/quote.py NVDA --source yfinance
python ~/.openclaw/skills/stock-quote/scripts/quote.py NVDA --source stooq
python ~/.openclaw/skills/stock-quote/scripts/quote.py NVDA --source fmp
输出字段
较前收盘价变动 |
| change_percent | 变动百分比 |
| previous_close | 前一交易日收盘价 |
| day
high / daylow | 今日交易区间 |
| volume | 交易量 |
| market_cap | 总市值 |
| pe_ratio | 滚动市盈率 |
| week
52high / week
52low | 52周区间 |
| dividend_yield | 股息率(如适用) |
数据源
| 数据源 | 优先级 | API密钥 | 覆盖范围 | 备注 |
|---|
| Stooq | 第1位(自动) | ❌ 不需要 | 美股 | 免费,延迟的收盘价数据 |
| yfinance |
第2位 | ❌ 不需要 | 全球 | 有速率限制(约2000次/天) |
|
FMP | 第3位 | ⚠️ 演示版 | 全球 | 演示数据有限 |
|
Web | 第4位 | ❌ 不需要 | 仅Yahoo | HTML网页抓取 |
自动模式(默认):Stooq → yfinance → FMP → 网页抓取
集成示例
更新投资组合持仓
python
from skills.stockquote.scripts.quote import fetchyfinance_data
获取所有持仓的当前价格
holdings = [NVDA, TSLA, BABA, ORCL, UNH, AAL, AMZN]
quotes = fetch
yfinancedata(holdings)
计算当前投资组合总价值
total_value = sum(quote[price] * shares for symbol, quote in quotes.items()
if price in quote and quote[price])
检查交易规则合规性
python
检查市盈率规则(市盈率 > 35 则禁止交易)
quote = fetch
yfinancedata([NVDA])[NVDA]
if quote.get(pe_ratio, 0) > 35:
print(⚠️ 市盈率超过35 - 违反规则)
检查52周百分位(高于70%则禁止交易)
if quote.get(price) and quote.get(week
52high) and quote.get(week
52low):
percentile = (quote[price] - quote[week
52low]) / \
(quote[week
52high] - quote[week
52low])
if percentile > 0.70:
print(⚠️ 价格高于52周区间的第70百分位)
每日心跳更新
添加到 HEARTBEAT.md:
- - 获取所有持仓的当前价格(NVDA, TSLA, BABA, ORCL, UNH, AAL, AMZN)
- 使用最新市值更新 MEMORY.md 持仓表
- 检查是否有任何持仓距离止损线在5%以内
- 如果TSLA接近$385.90止损线则发出警报
错误处理
- - 网络故障 → 返回包含错误消息的字段
- 无效股票代码 → 返回错误:未找到数据
- 市场休市 → 返回最后交易价格及时间戳
在使用价格数据前,务必检查结果中是否包含error字段。
依赖项
bash
主要依赖(推荐)
pip install yfinance
备用依赖(如果yfinance不可用)
pip install requests
与其他技能配合使用
- - stock-advisor:提供价格数据用于分析
- trading-supervisor:根据交易规则验证价格
- elite-memory:更新 MEMORY.md 中的投资组合估值
示例输出
📈 NVDA: $176.46 +2.34 (+1.35%)
市值:$4.32T
PE: 68.45
52 周:$108.13 - $185.50 (当前位置:73.2%)
📉 TSLA: $398.68 -5.12 (-1.27%)
市值:$1.28T
PE: 95.23
52 周:$206.50 - $479.86 (当前位置:41.5%)