openclaw-stock-skill

安装量: 199
排名: #4334

安装

npx skills add https://github.com/1018466411/openclaw-stock-data-skill --skill openclaw-stock-skill

📥 安装方法 npx skills add https://github.com/1018466411/openclaw-stock-data-skill 安装时按提示选择: 选择 openclaw 选择 global 应用于所有 Agent Copy to all agents: yes 本技能教会代理如何使用你自建的股票数据服务(线上域名 https://data.diemeng.chat ),通过 API Key 进行鉴权,查询股票的日线、分钟线、财务指标等数据。 ⚙️ API Key 配置约定 OpenClaw 会按照 skills.entries. 配置 把 API Key 和自定义配置注入到进程环境变量中。 本技能约定使用环境变量 STOCK_API_KEY 作为主密钥,并在 metadata.openclaw.primaryEnv 中声明,以便通过 skills.entries.openclaw-stock-skill.apiKey 统一配置。 推荐的 OpenClaw 配置示例( ~/.openclaw/openclaw.json ): { skills : { entries : { "openclaw-stock-skill" : { enabled : true , // 建议在 OpenClaw UI 的 Skill 参数面板里填写 apiKey, // Gateway 会自动将其写入 STOCK_API_KEY 环境变量 apiKey : { source : "env" , provider : "default" , id : "STOCK_API_KEY" } , env : { // 可在这里直接写死,或通过系统环境变量覆盖 STOCK_API_KEY : "YOUR_REAL_STOCK_API_KEY" } , config : { // 可选:覆盖默认域名 baseUrl : "https://data.diemeng.chat" } } } } } 参考文档: Skills Config 、 Skills ⚠️ 重要说明 1. 权限开通与 403 错误 如果 API 返回 403 错误 ,说明您的账号没有开通对应接口的权限。 请务必访问官网 https://data.diemeng.chat/ ,在个人中心开通所需权限(如股票行情、实时快照、可转债等)。 2. 接口类型区分 实时接口 : get_stock_snapshot_daily (不传日期或传今日):获取最新实时快照(价格、成交量、五档盘口等)。 get_stock_snapshot_push_history :获取实时推送的历史记录。 get_call_auction :获取集合竞价数据。 历史接口 : get_daily_data :获取历史日 K 线。 get_history_data :获取历史分钟线。 get_finance_data :获取历史财务指标。 get_stock_snapshot_daily (传历史日期):获取历史快照。 总体说明 基础域名 :默认使用 https://data.diemeng.chat ,如存在 skills.entries.openclaw-stock-skill.config.baseUrl 则优先使用配置中的 baseUrl 。 鉴权方式 :所有需要权限的接口都必须带上 API Key: 首选 HTTP Header: apiKey: (推荐) 兼容 Header: X-API-Key: 后端也支持在 JSON body 中携带 apiKey 字段,但为了安全与规范,本技能 统一通过 Header 传递 。 返回结构 : 大多数接口返回: { "code": 200, "msg": "成功", "data": { ... } } 少数列表类接口直接返回数组或简单结构,实际响应以 JSON 为准。 限流与黑名单 : API Key 及 IP 都有严格限流与黑名单逻辑: 无效 API Key 多次尝试会触发封禁(参见后端 DataAccessVerifier 实现)。 需优先缓存和复用同一 API Key,不要在循环中频繁切换。 ⚠️ 数据量限制 :除特别说明外, 大多数列表类接口单次请求最多返回 10000 条数据 。如需获取更多数据,请使用分页参数。 能力概览(建议的工具意图) 代理应将本技能视作一组 HTTP 能力,而不是单一接口: get_stock_daily_bars :查询指定股票在某一时间区间内的日线 K 线数据。 get_stock_intraday_bars :查询分钟级(1/5/15/30/60 分钟)历史数据。 get_stock_finance_factors :查询日度财务因子(PE、PB、换手率等)。 get_stock_list :查询股票基础信息列表,用于代码/名称搜索。 get_stock_valuation :查询估值列表和详细估值信息。 get_stock_calendar_and_snapshot :查询交易日历和当日快照。 get_stock_search :使用自然语言条件搜索符合条件的股票(如"PE<20 且换手率>3%")。 get_stock_call_auction :查询集合竞价数据。 get_stock_closing_snapshot :查询收盘快照数据。 get_stock_snapshot_daily :查询实时或历史股票快照(含 Redis 缓存加速)。 get_stock_suspension :查询股票停牌信息。 get_stock_adj_factor :查询复权因子。 get_bond_daily :查询可转债日线数据。 get_bond_indicator_daily :查询可转债日指标数据。 get_bond_list :查询可转债列表信息。 代理在规划调用时,应根据用户自然语言意图,选择以上能力并组合使用。 接口详情与调用规范 1. 日线数据: POST /api/stock/daily URL : {baseUrl}/api/stock/daily 方法 : POST Headers : Content-Type: application/json apiKey: 请求体 JSON (后端 DailyDataRequest ): { "stock_code" : "000001.SZ" , "start_time" : "2024-01-01" , "end_time" : "2024-01-31" , "page" : 0 , "page_size" : 1000 } 说明: stock_code 可以是单个字符串,也可以是字符串数组。 start_time 、 end_time 格式为 YYYY-MM-DD 。 支持分页, page 从 0 开始。 响应字段: data.total :总记录数 data.list :每条记录包含 stock_code , stock_name , trade_date , open , high , low , close , vol , amount 等字段,价格与成交量已在后端统一保留 2 位小数。 响应主体(简化): data.total :总记录数 data.list :每条记录包含 stock_code , trade_date , open , high , low , close , vol , amount 等字段,价格与成交量已在后端统一保留 2 位小数。 代理在需要“某股某段时间的日 K 线”时,应优先选择该接口。 2. 分钟级历史数据: POST /api/stock/history URL : {baseUrl}/api/stock/history 方法 : POST Headers :同上 请求体 JSON (后端 HistoryDataRequest ): { "stock_code" : "000001.SZ" , "level" : "5min" , "start_time" : "2024-01-01 09:30:00" , "end_time" : "2024-01-01 15:00:00" , "page" : 0 , "page_size" : 1000 } 字段说明: level : "1min" | "5min" | "15min" | "30min" | "60min" start_time / end_time : 允许仅日期(自动补全 00:00:00 和 23:59:59) 或完整时间戳 YYYY-MM-DD HH:MM:SS 响应主体(简化): data.list 中每条包含: stock_code , trade_time , open , high , low , close , vol , amount 。 用于用户询问“某天/某段时间内的分钟级行情、分时数据”等场景。 3. 财务与因子(行情因子): POST /api/stock/finance URL : {baseUrl}/api/stock/finance 方法 : POST 请求体 JSON (后端 FinanceDataRequest ): { "stock_code" : "000001.SZ" , "start_time" : "2024-01-01" , "end_time" : "2024-03-31" , "page" : 0 , "page_size" : 1000 } 主要返回字段(列表中每条): stock_code , stock_name , trade_date , close , turnover_rate , turnover_rate_f , volume_ratio , pe , pe_ttm , pb , ps , ps_ttm , dv_ratio , dv_ttm , total_share , float_share , free_share , total_mv , circ_mv 等。 适合估值分析、换手率、成交金额、市值等相关问题。 4. 股票基础信息列表: GET /api/stock/list URL : {baseUrl}/api/stock/list 方法 : GET Query 参数 : stock_code (可选):精确股票代码筛选 page :默认 0 page_size :默认 20000 响应(封装在统一 success 结构中): data.total data.list :包含 stock_code , name , area , industry , list_date , symbol , list_status , delist_date , is_hs 等。 当用户只给出股票名称、地区、行业等描述时,可先通过该接口获取匹配列表,再提示用户选择具体代码。 5. 估值列表与详细估值: GET /api/stock/valuation & GET /api/stock/valuation/list 5.1 综合估值列表: GET /api/stock/valuation URL : {baseUrl}/api/stock/valuation 方法 : GET 说明 : 无需请求体,通过 API Key 权限控制访问。 内部会聚合 stock_finance_daily , stock_industry , stock_ten_year_growth 等多张表,返回 StockValuationItem 列表。 典型字段: stock_code , stock_name , level1_name , level2_name , level3_name pe_ttm , pe_percentile , latest_price , dividend_yield_ttm 行业相关: industry_avg_pe , industry_pe_rank , sector_pe_median , sector_pe_rank 成长与财务: eps , roe , roa , eps_growth_10y , roe_growth_10y , avg_dividend_10y 等。 当用户提问如“某只股票在行业内估值水平如何”“给我按市盈率从低到高列出某行业股票”时应优先考虑调用该接口。 5.2 简化估值列表: GET /api/stock/valuation/list URL : {baseUrl}/api/stock/valuation/list 方法 : GET Query 参数 : sort_by : pe_ttm | pe_percentile | dividend_yield_ttm | industry_pe_rank (默认 pe_ttm ) sort_order : asc | desc (默认 asc ) industry (可选) limit (默认 100) offset (默认 0) 适合只需要“按某个指标排序的前 N 个股票”的场景。 6. 交易日历与快照: GET /api/basic/calendar & GET /api/basic/snapshot 6.1 交易日历: GET /api/basic/calendar URL : {baseUrl}/api/basic/calendar 方法 : GET Query 参数 : start_time : YYYY-MM-DD end_time : YYYY-MM-DD 响应: data 为数组,每条含 date , is_open (1 为交易日,0 为休市)。 当用户问“某段时间哪些是交易日”“下一个交易日是什么时候”等,可使用此接口。 6.2 快照: GET /api/basic/snapshot URL : {baseUrl}/api/basic/snapshot 方法 : GET Query 参数 : stock_code (可选) page , page_size 返回最新一笔集合竞价数据的汇总,字段包括价格、成交量、买卖盘等。 当用户需要“当前(最近一次)盘口快照”或大盘扫描时,可使用此接口。 7. 股票条件搜索: POST /api/stock/search URL : {baseUrl}/api/stock/search 方法 : POST Headers : Content-Type: application/json apiKey: 请求体 JSON : { "query" : "pe_ttm < 20 且 turnover_rate > 3%" , "stock_code" : "000001.SZ" , "date" : "2024-01-01" , "page" : 0 , "page_size" : 100 , "sort_by" : "pe_ttm" , "sort_order" : "asc" } 字段说明: query ( 必填 ):搜索条件,支持自然语言或表达式 支持格式: pe_ttm < 20 、 turnover_rate > 3% 、 pe_ttm < 20 且 turnover_rate > 3% 支持中文: 市盈率小于20 、 换手率大于3% 支持单位: circ_mv > 100亿 、 volume > 1000万 stock_code (可选):精确股票代码筛选 date (可选):日期,格式 YYYY-MM-DD 或 MM-DD (默认为当年) 不提供日期 :查询 stock_snapshot_daily (最新实时数据) 提供日期 :查询 stock_finance_daily (历史财务数据) page :页码,从 0 开始 page_size :每页数量, 最大 1000 sort_by (可选):排序字段,如 pe_ttm 、 turnover_rate sort_order (可选):排序方向 asc 或 desc (默认 desc) 支持的字段 : price / close :股价/收盘价 pct_chg :涨跌幅 turnover_rate :换手率 pe / pe_ttm :市盈率 pb :市净率 total_mv / circ_mv :总市值/流通市值 total_share / float_share :总股本/流通股本 volume / turnover :成交量/成交额 dividend_ratio :股息率 响应主体: data.total :总记录数 data.list :符合条件的股票列表 重要提醒 :该接口单次请求 最多返回 1000 条数据 。如需获取更多结果,请使用分页功能。 适用场景 :用户需要根据财务指标筛选股票,如"帮我找出 PE<20 的股票"、"换手率大于 5% 的股票有哪些"。 8. 获取搜索字段列表: GET /api/stock/search/fields URL : {baseUrl}/api/stock/search/fields 方法 : GET Headers : apiKey: 说明 :获取所有支持的搜索字段及其别名 9. 集合竞价数据: POST /api/stock/call_auction URL : {baseUrl}/api/stock/call_auction 方法 : POST Headers : apiKey: 请求体 JSON : { "stock_code" : "000001.SZ" , "start_time" : "2024-01-01 09:15:00" , "end_time" : "2024-01-01 09:25:00" , "page" : 0 , "page_size" : 100 } 字段说明: start_time / end_time :时间范围,支持仅日期(自动补全时间) page_size : 最大 10000 返回字段: stock_code , name , trade_time , close , open , high , low , pre_close , vol , amount , turnover_rate , pe , pb , pe_ttm , dv_ttm 等 重要提醒 :单次请求 最多返回 10000 条数据 。 10. 收盘快照数据: POST /api/stock/closing_snapshot URL : {baseUrl}/api/stock/closing_snapshot 方法 : POST Headers : apiKey: 请求体 JSON : { "stock_code" : "000001.SZ" , "start_time" : "2024-01-01 15:00:00" , "end_time" : "2024-01-01 15:05:00" , "page" : 0 , "page_size" : 100 } 返回字段:包含价格、成交量、买卖盘、涨跌幅等完整快照数据 重要提醒 :单次请求 最多返回 10000 条数据 。 11. 股票快照数据(实时/历史): POST /api/stock/snapshot_daily URL : {baseUrl}/api/stock/snapshot_daily 方法 : POST Headers : apiKey: 请求体 JSON : { "stock_code" : "000001.SZ" , "date" : "2024-01-01" , "page" : 0 , "page_size" : 10000 } 特性: 实时快照 :如果不提供 date 或提供今日日期,系统优先从 Redis 缓存读取最新的实时快照数据。 历史快照 :如果提供历史日期,系统返回当天的历史快照数据。 返回字段包含 40+ 个指标:价格、成交量、市值、PE、PB、买卖盘等。 page_size : 最大 10000 。 重要提醒 :这是获取实时行情快照的主要接口。 12. 推送历史数据: POST /api/stock/snapshot_push_history URL : {baseUrl}/api/stock/snapshot_push_history 方法 : POST Headers : apiKey: 说明 :查询 WebSocket 推送历史,按推送批次分组返回 13. 停牌信息: GET /api/stock/suspension URL : {baseUrl}/api/stock/suspension 方法 : GET Headers : apiKey: Query 参数 : stock_code (可选) trade_date (可选) page , page_size 14. 复权因子: POST /api/stock/adj_factor URL : {baseUrl}/api/stock/adj_factor 方法 : POST Headers : apiKey: 请求体 JSON : { "stock_code" : "000001.SZ" , "start_time" : "2024-01-01" , "end_time" : "2024-01-31" , "page" : 0 , "page_size" : 10000 } 返回字段: stock_code , stock_name , trade_date , factor_a , factor_b (自定义复权因子) 重要提醒 :单次请求 最多返回 10000 条数据 。 15. 数据下载(整日行情): POST /api/stock/daily_dump URL : {baseUrl}/api/stock/daily_dump 方法 : POST Headers : apiKey: 请求体 JSON : { "date" : "2024-01-01" , "level" : "daily" } level 参数: daily | 1min | 5min | 15min | 30min | 60min 返回:gzip 压缩的 JSON 文件(通过 Nginx 高性能下载) 限制: 只能下载 最近 90 天 的数据 每个用户每个日期每天最多下载 10 次 ,超过后限制 3 天 当日数据需收盘后(15:05 后)才能下载 16. 可转债日线数据: POST /api/bond/daily URL : {baseUrl}/api/bond/daily 方法 : POST Headers : apiKey: 请求体 JSON : { "stock_code" : "128136.SZ" , "start_time" : "2024-01-01" , "end_time" : "2024-01-31" , "page" : 0 , "page_size" : 10000 } 字段说明: stock_code (可选):可转债代码,如 128136.SZ ,支持数组 start_time 、 end_time :格式为 YYYY-MM-DD 返回字段: stock_code , stock_name , trade_date , open , high , low , close , prev_close , change , pct_chg , factor , vol , amount 单次请求 最多返回 10000 条数据 。 17. 可转债日指标数据: POST /api/bond/indicator_daily URL : {baseUrl}/api/bond/indicator_daily 方法 : POST Headers : apiKey: 请求体 JSON : { "stock_code" : "128136.SZ" , "start_date" : "2024-01-01" , "end_date" : "2024-01-31" , "page" : 0 , "page_size" : 10000 } 字段说明: stock_code (可选):可转债代码,支持数组 start_date 、 end_date (可选):日期范围,至少提供一个 返回字段: stock_code , stock_name , trade_date , name , pre_close , open , high , low , close , change , pct_chg , vol , amount , remain_size , pure_bond , pure_premium , conv_value , conv_premium 等 单次请求 最多返回 10000 条数据 。 18. 可转债列表: POST /api/bond/list URL : {baseUrl}/api/bond/list 方法 : POST Headers : apiKey: 请求体 JSON : { "bond_code" : "128136.SZ" , "stock_code" : "000001.SZ" , "exchange" : "SZSE" , "page" : 0 , "page_size" : 10000 } 字段说明: bond_code (可选):可转债代码筛选 stock_code (可选):正股代码筛选 exchange (可选):交易所筛选(SZSE/SSE) 返回字段:包含 bond_code , bond_name , bond_short_name , conv_code , stock_code , stock_name 等完整可转债信息 调用策略与最佳实践 API Key 获取与使用 优先从环境变量 STOCK_API_KEY 读取(由 OpenClaw 按 skills.entries.openclaw-stock-skill.apiKey 注入)。 若环境变量缺失,可根据用户在 Skill 配置面板中输入的值(通常同样会映射到该环境变量)进行调用。 不要在 URL Query 中传递 apiKey 或 api_key ,后端会视为安全风险。 错误处理 code = 401 :API Key 无效或缺失,应提示用户检查在 OpenClaw Skill 配置中的 API Key。 code = 403 :权限不足或下载次数/访问次数限制,应向用户说明权限/限流约束。 code = 429 :请求过于频繁,需减少调用频率或提示用户稍后再试。 分页与大数据量 若 data.total 很大,代理应分批分页请求,并在回答中做汇总,而不是一次性获取全部数据。 对于分钟级或 tick 级大数据量,应在对话中与用户确认时间范围和精度,避免无谓的海量下载。 单位与精度 价格、成交量等字段在后端已经统一保留 2 位小数;如需展示给用户,可直接使用或再格式化。 分红相关字段在估值接口中已做 10 年平均等处理,解释时注意说明口径(年化、近 10 年等)。 使用示例(给代理的思路) 当用户说: “帮我查一下 000001.SZ 在 2024 年 1 月份的日 K 线” 调用 POST /api/stock/daily , stock_code = "000001.SZ" ,时间区间为 2024-01-01 至 2024-01-31 。 对返回的 data.list 进行整理,总结涨跌幅、最大回撤、平均成交额等。 当用户说: “按市盈率从低到高列出券商行业的前 20 只股票” 调用 GET /api/stock/valuation/list ,设置 industry = "证券" (或其它后端行业名称)、 sort_by = "pe_ttm" , sort_order = "asc" , limit = 20 。 将结果按表格形式展示,并简要点评估值分布。 当用户说: “这周哪些天是交易日?” 根据当前日期计算一周范围,调用 GET /api/basic/calendar 。 将 is_open = 1 的日期列出,说明哪些是交易日。 本技能不包含额外可执行脚本,完全通过指导代理调用现有 HTTP 接口工作。所有请求都应优先使用 STOCK_API_KEY 环境变量,并遵守上述限流与安全约定。

返回排行榜