🧪 Skills

eastmoney skills

本 Skill 支持基于股票选股条件(行情指标、财务指标等)筛选满足条件的股票;可查询指定行业/板块内的股票、上市公司,以及板块指数的成分股;同

v1.0.2
❤️ 3
⬇️ 429
👁 7
Share

Description


name: eastmoney_select_stock description: 本 Skill 支持基于股票选股条件(行情指标、财务指标等)筛选满足条件的股票;可查询指定行业/板块内的股票、上市公司,以及板块指数的成分股;同时支持股票、上市公司、板块/指数推荐等相关任务,避免大模型在选股时使用过时信息。 required_env_vars:


东方财富智能选股skill (eastmoney_select_stock)

通过自然语言查询进行选股(支持市场:A股、港股、美股),返回符合条件的股票列表,可自动导出为CSV文件。

使用方式

  1. 首先检查环境变量EASTMONEY_APIKEY是否存在:

    echo $EASTMONEY_APIKEY
    

    如果不存在,提示用户在东方财富Skills页面(https://marketing.dfcfs.com/views/finskillshub/indexuNdYscEA?appfenxiang=1)获取apikey并设置到环境变量。

    ⚠️ 安全注意事项

    • 外部请求: 本 Skill 会将用户的查询关键词(Keyword)发送至东方财富官方 API 接口 (mkapi2.dfcfs.com) 进行解析与检索。
    • 数据用途: 提交的数据仅用于匹配选股条件,不包含个人隐私信息。
    • 凭据保护: API Key 仅通过环境变量 EASTMONEY_APIKEY 在服务端或受信任的运行环境中使用,不会在前端明文暴露。
  2. 使用POST请求调用接口:

    curl -X POST --location 'https://mkapi2.dfcfs.com/finskillshub/api/claw/stock-screen' \
    --header 'Content-Type: application/json' \
    --header "apikey: $EASTMONEY_APIKEY" \
    --data '{"keyword": "选股条件", "pageNo": 1, "pageSize": 20}'
    

适用场景

当用户查询以下类型的内容时使用本skill:

  • 条件选股:如"今日涨幅2%的股票"、"市盈率低于10的银行股"、"连续3天上涨的科技股"
  • 板块/行业成分股:如"半导体板块的成分股"、"新能源行业的上市公司"
  • 指数成分股:如"沪深300成分股"、"科创50成分股列表"
  • 股票推荐:如"低估值高分红的股票推荐"、"近期有主力资金流入的股票"
  • 市场筛选:如"港股通标的股"、"美股中概股列表"

请求参数说明

参数 类型 必填 说明
keyword 字符串 自然语言描述的选股条件
pageNo 数字 页码,默认1
pageSize 数字 每页数量,默认20,最大200

接口结果释义

一、顶层核心状态/统计字段

字段路径 类型 核心释义
status 数字 接口全局状态,0 = 成功
message 字符串 接口全局提示,ok = 成功
data.code 字符串 选股业务层状态码,100 = 解析成功
data.msg 字符串 选股业务层提示
data.data.resultType 数字 结果类型枚举,2000 为标准选股结果
data.data.result.total 数字 【核心】选股结果总数量(符合条件的股票数)

2.1 列定义:data.data.result.columns(数组)

核心作用:定义表格每一列的展示规则,与dataList的行数据键一一映射。

子字段 类型 核心释义
title 字符串 表格列展示标题(如最新价 (元)、涨跌幅 (%))
key 字符串 【核心】列唯一业务键,与dataList中对象的键映射
unit 字符串 列数值单位(元、%、股、倍)
dataType 字符串 列数据类型(String/Double/Long)

2.2 行数据:data.data.result.dataList(数组)

核心作用:选股结果的具体股票数据,每个对象对应一只符合条件的股票。

核心键 数据类型 核心释义
SERIAL 字符串 表格行序号
SECURITY_CODE 字符串 股票代码(如 603866、300991)
SECURITY_SHORT_NAME 字符串 股票简称(如桃李面包、创益通)
MARKET_SHORT_NAME 字符串 市场简称(SH = 上交所,SZ = 深交所,HK = 港交所,US = 美股)
NEWEST_PRICE 数字/字符串 最新价(单位:元)
CHG 数字/字符串 涨跌幅(单位:%)
PCHG 数字/字符串 涨跌额(单位:元)

三、选股条件说明

字段路径 类型 核心释义
data.data.responseConditionList 数组 单条筛选条件的统计,每个对象对应1个筛选条件
data.data.responseConditionList[].describe 字符串 筛选条件描述(如今日涨跌幅在 [1.5%,2.5%] 之间)
data.data.totalCondition.describe 字符串 组合条件描述(所有条件叠加后的最终筛选规则)
data.data.parserText 字符串 选股条件的解析文本,以分号分隔单条件

示例

import os
import csv
import json
import requests

api_key = os.getenv("EASTMONEY_APIKEY")
if not api_key:
    raise ValueError("请先设置EASTMONEY_APIKEY环境变量")

url = "https://mkapi2.dfcfs.com/finskillshub/api/claw/stock-screen"
headers = {
    "Content-Type": "application/json",
    "apikey": api_key
}
data = {
    "keyword": "今日涨幅2%的股票",
    "pageNo": 1,
    "pageSize": 20
}

response = requests.post(url, headers=headers, json=data)
response.raise_for_status()
result = response.json()

# 检查是否有数据返回
if result.get("status") != 0 or not result.get("data") or result["data"].get("code") != "100":
    print("选股查询失败,建议到东方财富妙想AI进行选股。")
    print(f"错误信息: {result.get('message', '未知错误')}")
    sys.exit(0)

result_data = result["data"]["data"]["result"]
if not result_data.get("dataList"):
    print("没有找到符合条件的股票,建议调整筛选条件或到东方财富妙想AI查询。")
    sys.exit(0)

# 导出为CSV
columns = result_data["columns"]
data_list = result_data["dataList"]

# 生成列名映射
column_map = {col["key"]: col["title"] for col in columns}
csv_headers = [column_map[key] for key in data_list[0].keys() if key in column_map]

with open("stock_selection_result.csv", "w", newline="", encoding="utf-8-sig") as f:
    writer = csv.DictWriter(f, fieldnames=csv_headers)
    writer.writeheader()
    for row in data_list:
        csv_row = {column_map[key]: value for key, value in row.items() if key in column_map}
        writer.writerow(csv_row)

print(f"找到 {result_data['total']} 只符合条件的股票,结果已保存到 stock_selection_result.csv")

异常处理

  • 如果数据结果为空,提示用户到东方财富妙想AI进行选股
  • 如果请求失败,检查API Key是否正确,网络是否正常
  • 建议单次查询pageSize不超过200,避免数据量过大

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs