360 Secure SkillHub
360 安全技能中心

同花顺问财ETF选股

核心功能:支持行情、跟踪指数、基本面、规模、风格等单/多条件组合筛选ETF。典型场景:用户可通过自然语言查询如“沪深300ETF且规模超10亿”等需求。输入为自然语言筛选请求,输出为结构化ETF数据(含代码、简称等),空数据会重试放宽条件,结果标注来源同花顺问财,无数据则引导至其web端。

bensema
bensema
热度 47.60
最近更新 2026-05-11 17:40:48
分类:数据依赖:代码执行 / 第三方 API应用场景:财务 / 数据处理

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add iwencai-skill-etf
Metadata
name
问财选ETF
description
同花顺智能选ETF skill。根据行情、跟踪指数基本面、规模、风格类型等条件筛选ETF。返回符合条件的相关ETF数据。当用户询问ETF筛选问题时,必须使用此技能。

问财选ETF 使用指南

技能概述

本技能提供ETF智能筛选能力,通过自然语言查询支持:

  • 行情指标筛选(价格、涨跌幅、成交量、换手率等)
  • 跟踪指数筛选(沪深300、中证500、上证50、创业板指等)
  • 基本面筛选(估值、费率、跟踪误差等)
  • 规模筛选(资产规模、份额变化等)
  • 风格类型筛选(成长、价值、平衡等)
  • 多条件组合筛选

核心处理流程

步骤 1: 接收用户 Query

接收用户的自然语言ETF筛选请求,分析用户意图。

步骤 2: Query 改写

将用户问句适当改写为标准的金融查询问句,保持原意不变:

改写规则:

  • 保留用户核心意图(如:沪深300ETF、规模大于10亿等)
  • 将口语化表达转为标准金融术语(如"给我选一个ETF" → "ETF有哪些")
  • 适当简化过于复杂的复合条件
  • 改写后需保持原意不变

思维链拆解(如果需要): 根据用户需求自行决定是否拆解思维链:

  • 单次查询:如果用户问题可以直接用单个 query 回答,直接进入下一步
  • 多次查询:如果用户问题涉及多个独立的问句,需要拆分为多个标准 query 分别调用接口。

步骤 3: API 调用

调用金融查询接口获取数据,支持分页参数:

# 使用 Python 标准库
import urllib.request
import json
import os

url = "https://openapi.iwencai.com/v1/query2data"
headers = {
    "Authorization": f"Bearer {os.environ['IWENCAI_API_KEY']}",
    "Content-Type": "application/json"
}
payload = {
    "query": "改写后的查询语句",
    "source": "test",
    "page": "1",
    "limit": "10",
    "is_cache": "1",
    "expand_index": "true"
}

data = json.dumps(payload).encode("utf-8")
request = urllib.request.Request(url, data=data, headers=headers, method="POST")
response = urllib.request.urlopen(request, timeout=30)
result = json.loads(response.read().decode("utf-8"))
datas = result.get("datas", [])

步骤 4: 空数据处理

如果 datas 为空或无数据,适当放宽或简化查询条件后重新请求(最多尝试2次):

  • 首次重试:去掉过于苛刻的条件,保留核心筛选条件
  • 二次重试:进一步放宽条件或使用更通用的表述

每次重试都算作一次改写,最终返回时需说明最终使用的查询问句。

步骤 5: 数据解析

解析返回的 datas 数组,提取相关指标:

for item in datas:
    # 根据查询类型提取相应字段

步骤 6: 数据扩展决策

skill 需要自行决策当前数据是否足够回答用户问题:

  • 如果数据完整:直接返回格式化后的结果
  • 如果需要更多背景信息:可以调用其他金融工具或者搜索工具获取相关资讯

步骤 7: 回答用户

组织语言回答用户问题,确保:

  • 结果清晰易懂
  • 如果改写了问句,需特别说明最终使用的查询问句
  • 必须强调数据来源于同花顺问财

接口地址

  • IWENCAI_API_URL

认证方式

  • 请求头:Authorization: Bearer {IWENCAI_API_KEY}
  • 环境变量:IWENCAI_API_KEY

请求参数

参数名 类型 必填 说明
query STRING 是 用户问句
source STRING 否 来源,默认值:test
page STRING 否 分页参数,默认值:1
limit STRING 否 分页参数,默认值:10
is_cache STRING 否 缓存参数,默认值:1
expand_index STRING 否 是否展开指数,默认值:true

响应参数

参数名 类型 说明
datas ARRAY 金融数据列表,对象数组

响应示例:

{
  "datas": [
    {"ETF代码": "510300.SH", "ETF简称": "华泰柏瑞沪深300ETF", "涨跌幅": 1.25},
    {"ETF代码": "159919.SZ", "ETF简称": "嘉实沪深300ETF", "涨跌幅": 1.18}
  ]
}

CLI 使用方式

命令行参数

参数 类型 必填 说明
--query STRING 是 直接传入查询字符串
--page STRING 否 分页参数,默认值:1
--limit STRING 否 每页条数,默认值:10
--is-cache STRING 否 缓存参数,默认值:1
--api-key STRING 否 API密钥(默认从环境变量读取)

使用示例

# 直接查询(默认分页10条)
python scripts/cli.py --query "沪深300ETF有哪些?"

# 指定分页参数
python scripts/cli.py --query "规模最大的ETF" --page "1" --limit "20"

# 指定API密钥
python scripts/cli.py --query "创业板ETF" --api-key "your-key"

数据来源标注

重要提示:

错误处理

代码结构

hithink-etf-selector/
├── SKILL.md       # Skill 配置文件
├── references/
│   ├── api.md     # API 接口文档
│   └── requirement.md  # 构建要求文档
└── scripts/
    └── cli.py     # CLI 入口(单一脚本,内含API调用和数据处理)