catalog/repos/1018466411--openclaw-stock-data-skill.md

367 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# A股市场数据API工具
`股票数据` `A股` `可转债` `ETF` `实时行情` `Python`
# 股票数据 API Skill for OpenClaw
这是一个为 OpenClaw 等 Agent 工具设计的股票数据 Skill提供了 A 股市场及周边资产的完整数据访问能力。
## 📥 安装方法
```bash
npx skills add https://github.com/1018466411/openclaw-stock-data-skill
```
安装时按提示选择:
1. 选择 **openclaw**
2. 选择 **global** 应用于所有 Agent
3. 复制到所有 Agent**yes**
## 📋 数据分类概览
2. **股票实时数据**
- 实时行情快照(价格、五档盘口等)、集合竞价、推送历史、停牌信息等
- 典型函数:`get_stock_snapshot_daily`(实时快照)、`get_call_auction``get_basic_snapshot`(集合竞价快照)、`get_stock_snapshot_push_history`
3. **股票历史数据**
- 日 K 线(前复权/不复权)、分钟级历史、日度财务因子、复权因子、历史快照等
- 典型函数:`get_daily_data``get_history_data``get_finance_data``get_daily_adj_data``get_adj_factor`
3. **可转债历史和实时数据**
- 可转债日线、分钟级行情、日度指标(纯债价值、转股溢价等)、收盘快照、基础列表等
- 典型函数:`get_bond_daily``get_bond_history``get_bond_indicator_daily``get_bond_closing_snapshot``get_bond_list`
4. **ETF 数据**
- ETF 列表数据
- ETF 日线与分钟级历史行情
- 典型函数:`get_etf_list``get_etf_daily``get_etf_history`
5. **指数历史数据**
- 指数分钟级历史行情(支持多种时间粒度)
- 典型函数:`get_index_history`
6. **龙虎榜数据**
- 龙虎榜机构明细数据
- 典型函数:`get_dragon_tiger`
7. **WebSocket 实时快照**
- 通过 WebSocket 协议实时推送全市场股票快照
- 支持 Gzip 压缩JSON 格式字段简写cd, lp, vo 等)
- 连接地址:`wss://data.diemeng.chat/ws/stock/snapshot?token=YOUR_API_KEY`
> 此外还提供**条件搜索等高级能力**,详见 `stock_api.py` 与 `skill.json`。
## 🚀 快速开始
### 1. 注册账号并开通接口权限
**重要:使用本 Skill 前,必须先注册账号并为需要使用的接口开通对应权限。**
1. 访问 [https://data.diemeng.chat/](https://data.diemeng.chat/)
2. 注册新账号或登录现有账号
3. 在**个人中心 / 权限或套餐管理**中,按需开通以下数据大类的访问权限:
- 股票历史数据(行情、财务、估值等)
- 股票实时数据(集合竞价、基础快照等)
- 可转债数据(历史 & 实时)
- ETF 数据
- 指数历史数据
4.**API 管理**中创建并复制您的 **API Key**
> 如果未为某一类接口开通权限,即使配置了 API Key也会收到 403 或权限不足的错误。
### 2. 在 Skill 页面配置 API Key推荐
在 OpenClaw / ClawHub 中启用本 Skill 时:
1. 打开 `openclaw-stock-skill` 的 Skill 配置页面
2. 在参数面板中将从 `data.diemeng.chat` 获取的 **API Key** 填入对应字段(通常是 `apiKey``STOCK_API_KEY`
3. 保存后,网关会自动将该值注入到运行环境中(映射为 `STOCK_API_KEY` 环境变量)
这样使用本 Skill 时,无需在本机手动配置环境变量。
### 3. (可选)在本地代码中直接使用 API Key
如果你在自己的 Python 项目中直接使用 `stock_api.py`,可以按以下方式配置:
#### 方式一:配置文件(推荐用于 Linux 无界面环境)
在代码同级目录下创建一个名为 `config.json` 的文件(可复制 `config.json.template`),内容如下:
```json
{
"api_key": "your_api_key_here"
}
```
#### 方式二:环境变量
```bash
# Linux/macOS
export STOCK_API_KEY="your_api_key_here"
# Windows PowerShell
$env:STOCK_API_KEY="your_api_key_here"
# Windows CMD
set STOCK_API_KEY=your_api_key_here
```
#### 方式三:在代码中设置
```python
import os
os.environ["STOCK_API_KEY"] = "your_api_key_here"
```
### 4. 安装依赖
```bash
pip install requests
```
或使用 requirements.txt
```bash
pip install -r requirements.txt
```
## 📖 使用示例
### 基本使用
```python
from stock_api import get_stock_list, get_daily_data, search_stock_by_name
# 1. 获取股票列表
stocks = get_stock_list(page_size=10)
print(f"共有 {stocks['total']} 只股票")
for stock in stocks['list']:
print(f"{stock['stock_code']}: {stock['name']}")
# 2. 搜索股票
results = search_stock_by_name("平安")
for stock in results:
print(f"{stock['stock_code']}: {stock['name']}")
# 3. 获取日K线数据
daily_data = get_daily_data(
stock_code="600000.SH",
start_time="2024-01-01",
end_time="2024-01-31"
)
print(f"共 {daily_data['total']} 条数据")
for record in daily_data['list'][:5]:
print(f"{record['trade_date']}: 收盘价 {record['close']}")
```
### 获取多只股票数据
```python
from stock_api import get_daily_data
# 同时查询多只股票
data = get_daily_data(
stock_code=["600000.SH", "000001.SZ", "000002.SZ"],
start_time="2024-01-01",
end_time="2024-01-31"
)
```
### 获取历史分时数据(股票分钟级)
```python
from stock_api import get_history_data
# 获取5分钟级别数据
data = get_history_data(
stock_code="600000.SH",
level="5min",
start_time="2024-01-15 09:30:00",
end_time="2024-01-15 15:00:00"
)
```
### 获取当天分时数据(全市场实时)
```python
from stock_api import get_realtime_history
# 建议使用定时任务按时间拉取,一次获取全市场一分钟的数据
# 定时任务建议在每分钟的 2-5 秒后拉取上一分钟数据15秒后可复拉一次确保准确性
data = get_realtime_history(
trade_time="2026-03-15 09:31:00"
)
```
### 获取财务数据(股票日度因子)
```python
from stock_api import get_finance_data
# 获取财务指标
finance = get_finance_data(
stock_code="600000.SH",
start_time="2024-01-01",
end_time="2024-01-31"
)
for record in finance['list']:
print(f"日期: {record['trade_date']}")
print(f"PE(TTM): {record['pe_ttm']}")
print(f"PE百分位: {record.get('pe_ttm_percentile')}%")
print(f"PB: {record['pb']}")
print(f"总市值: {record['total_mv']}")
```
### 获取可转债数据
```python
from stock_api import (
get_bond_daily,
get_bond_history,
get_bond_indicator_daily,
)
# 1. 获取可转债日线数据
daily = get_bond_daily(
stock_code="110031.SH",
start_time="2024-01-01",
end_time="2024-01-31",
)
# 2. 获取可转债 5 分钟级历史数据
history = get_bond_history(
stock_code="110031.SH",
level="5min",
start_time="2024-01-02 09:30:00",
end_time="2024-01-02 15:00:00",
)
# 3. 获取可转债日度指标(纯债价值、转股溢价等)
indicator = get_bond_indicator_daily(
stock_code="110031.SH",
start_date="2024-01-01",
end_date="2024-01-31",
)
```
### 获取 ETF 数据
```python
from stock_api import get_etf_list, get_etf_daily, get_etf_history
# 1. 获取 ETF 列表
etf_list = get_etf_list()
print(etf_list)
# 2. 获取 ETF 日线数据
etf_daily = get_etf_daily(
stock_code="510300.SH",
start_time="2024-01-01",
end_time="2024-01-31",
)
# 3. 获取 ETF 5 分钟级历史数据
etf_history = get_etf_history(
stock_code="510300.SH",
level="5min",
start_time="2024-01-02 09:30:00",
end_time="2024-01-02 15:00:00",
)
```
### 获取指数历史数据
```python
from stock_api import get_index_history
# 获取指数 1 分钟级历史数据
index_history = get_index_history(
index_code="000300.SH", # 沪深 300 指数
level="1min",
start_time="2024-01-02 09:30:00",
end_time="2024-01-02 15:00:00",
)
```
## 🔧 API 接口说明
### 股票代码格式
- 上海:`600000.SH``688000.SH`
- 深圳:`000001.SZ``300000.SZ`
- 北京:`430000.BJ``830000.BJ`
### 时间格式
- 日期:`YYYY-MM-DD`,例如 `2024-01-15`
- 日期时间:`YYYY-MM-DD HH:MM:SS`,例如 `2024-01-15 09:30:00`
### 分时级别
- `1min` - 1 分钟
- `5min` - 5 分钟(默认)
- `15min` - 15 分钟
- `30min` - 30 分钟
- `60min` - 60 分钟
## 📚 完整 API 文档
更多详细的 API 文档请访问:[https://data.diemeng.chat/](https://data.diemeng.chat/)
## ⚠️ 注意事项
1. **API Key 安全**:请妥善保管您的 API Key不要将其提交到公开代码仓库
2. **请求频率**:请注意 API 的请求频率限制,避免过于频繁的请求
3. **数据范围**:部分接口支持查询全市场数据,但建议使用分页参数控制返回数量
4. **错误处理**:所有函数在出错时会抛出异常,请做好异常处理
## 🐛 常见问题
### Q提示"未找到 API Key"
A请确保已设置环境变量 `STOCK_API_KEY`,或访问 [https://data.diemeng.chat/](https://data.diemeng.chat/) 注册并获取 API Key。
### Q返回 401 未授权错误
A请检查 API Key 是否正确,并确保已在个人中心激活 API 访问权限。
### Q返回 403 权限不足
A您的账号可能没有访问该接口的权限请检查您的账号权限设置。
### Q如何获取更多数据
A使用 `page``page_size` 参数进行分页查询,或联系管理员提升账号权限。
## 📝 更新日志
### v1.0.0 (2024-01-XX)
- 初始版本发布
- 支持股票列表、日K线、历史分时、财务数据等核心功能
- 支持股票搜索查询
## 📄 许可证
MIT License
## 🔗 相关链接
- API 文档:[https://data.diemeng.chat/](https://data.diemeng.chat/)
- 注册账号:[https://data.diemeng.chat/](https://data.diemeng.chat/)
- GitHub 仓库:[查看项目源码](https://github.com)(创建仓库后更新此链接)
- GitHub 推送指南:[GITHUB.md](./GITHUB.md)
## 📤 推送到 GitHub
**建议推送到 GitHub** OpenClaw 有官方的 Skills 生态,你可以:
1. **推送到个人 GitHub 仓库** - 便于版本控制和分享
2. **提交到 OpenClaw Skills 生态** - 让更多用户发现和使用你的 Skill
3. **通过 ClawHub 平台发布** - OpenClaw 的官方 Skills 管理平台
详细步骤请查看 [GITHUB.md](./GITHUB.md) 文件。
---
**重要提示**:使用本 Skill 前,请务必访问 [https://data.diemeng.chat/](https://data.diemeng.chat/) 注册并获取 API Key