SuperAPI AI 工具集

eastmoney_select_stock

数据与分析

查看项目

更新于 10-15 14:13

技能介绍

东方财富智能选股 Skill(eastmoney_select_stock)用于通过自然语言查询进行选股,支持 A 股、港股、美股市场,返回符合条件的股票列表,并可自动导出为 CSV 文件。

一、用途 本 Skill 适用于以下类型的内容查询:

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

二、使用方式

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

echo $EASTMONEY_APIKEY

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

  1. 使用 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}'

请求参数说明:

  • keyword:字符串,必填,自然语言描述的选股条件。
  • pageNo:数字,否,页码,默认1。
  • pageSize:数字,否,每页数量,默认20,最大200。

三、接口结果释义 顶层核心状态/统计字段:

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

列定义:data.data.result.columns(数组),定义表格每一列的展示规则,与 dataList 的行数据键一一映射。子字段包括:

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

行数据: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")

五、安全注意事项

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

六、异常处理

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

七、限制

  • 需要有效的 EASTMONEY_APIKEY 才能调用接口。
  • 单次查询 pageSize 最大 200。
  • 具体收费、价格、平台支持范围等未在资料中提供。