بنقرة واحدة
windpy-sdk
WindPy SDK 本地调用参考手册。当用户需要编写使用 Wind 金融终端 Python API (from WindPy import w) 的代码时使用此技能。覆盖全部数据函数的签名、参数、返回值和示例。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
WindPy SDK 本地调用参考手册。当用户需要编写使用 Wind 金融终端 Python API (from WindPy import w) 的代码时使用此技能。覆盖全部数据函数的签名、参数、返回值和示例。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
全量爬取中国企业年金基金投资管理人在其官网发布的《企业年金基金投资管理情况》季度管理报告。内置人社部许可的22家投资管理人名录+每家官网披露栏目入口、抓取策略与站点反爬坑位;驱动脚本按季全量下载并做真伪校验与清单记录。当需要采集/批量下载企业年金(或职业年金)季度管理报告/信息披露、定位某投资管理人官网披露页、更新报告库、或做年金管理人季报数据集时使用。触发词:企业年金、投资管理人、季度报告、季报、信息披露、管理情况、年金爬取、全量爬取、年金披露、pension disclosure crawl。
AbleMind 私域平台(portal / skill-market / gitea,部署在 heyun01)运维手册。 覆盖部署上线流程、一组踩过坑的硬规矩、以及今天确立的架构/安全原则 (工作区即上线、密钥绝不进浏览器、共享顶栏单一来源、登录闸门、digest 数据解耦、 token 安全)。还含一套无头浏览器验证技巧。 当需要部署/上线 ablemind_portal、在 heyun01 上做运维、排查线上回归、 或评审"key 暴露 / 顶栏不同步 / 页面只读门禁 / digest 看不到"这类问题时使用。 触发词:部署、上线、运维、deploy、heyun01、ablemind 部署、digest/MCP/Hub 维护、 线上回归、key 泄露、顶栏不同步、登录闸门。
高德地图 / 地理工具箱 —— 通过京东 agentrs 代理网关,用单一 Bearer Token 调 6 个高德(Amap)工具: POI 地点检索、地理编码(地址↔经纬度/adcode)、行政区域查询、IP 定位、步行路径规划、坐标转换。 当需要查地点经纬度与 adcode、找附近地点(POI)、做步行导航、转换坐标系、 按 IP 定位、查行政区划时使用。触发词:高德、地图、经纬度、坐标、adcode、地理编码、 POI、附近、步行路线、导航、坐标转换、IP定位、行政区、省市区。
联网搜索工具箱 —— 通过京东 agentrs 代理网关,用单一 Bearer Token 调用 4 个搜索引擎: tavily(AI搜索)、cloudsway(必应/Bing,可拿网页全文)、SearchPro(搜狗,实时新闻时效最强)、 jdcloud_search(京东云RAG,返回整页正文)。当需要联网检索资讯、新闻、研报、实时信息, 或要抓取网页正文做后续分析时使用。触发词:联网搜索、实时搜索、查资讯、查新闻、 搜一下、tavily、bing、cloudsway、搜狗、京东搜索、web search、抓网页正文。
天气查询工具 —— 通过京东 agentrs 代理网关调用高德天气,返回城市实况(气温/天气/湿度/风力) 或未来预报。支持直接传高德 adcode,也支持传城市名/地址自动解析 adcode。当用户问某地天气、 气温、今天/明天下不下雨、出门带不带伞、未来几天天气这类问题时使用。 触发词:天气、气温、下雨、温度、湿度、风力、今天天气、明天天气、未来天气、weather、带伞。
在本机(yangnan 工作区)把一个小型 web 应用从零发布到公网的标准 playbook。 覆盖:选空闲端口、复用现成 .env 密钥(非明文)、pm2 托管 + 开机自启、 Cloudflare Tunnel 挂子域/路径拿自动 HTTPS(不开公网端口)、口令 cookie 网关、 交付前实测与结构整理。含两个真实踩过的坑(pm2 默认目录 root 占用、 Cloudflare 不剥路径前缀)和一份发布前 checklist。 当需要把一个本地小工具/演示页/内部应用上线到公网、配 pm2 持久化、 挂 lihanlin.com 子域、加访问口令时使用。 触发词:发布、上线、deploy、部署小应用、挂域名、Cloudflare Tunnel、隧道、 pm2 持久化、加 HTTPS、内网工具上公网、加口令登录。
| name | windpy-sdk |
| description | WindPy SDK 本地调用参考手册。当用户需要编写使用 Wind 金融终端 Python API (from WindPy import w) 的代码时使用此技能。覆盖全部数据函数的签名、参数、返回值和示例。 |
本技能提供 Wind 金融终端 Python API (from WindPy import w) 的完整函数参考,用于编写直接调用 WindPy SDK 的 Python 代码。
当用户需要:
from WindPy import w 的 Python 代码from WindPy import w
w.start() # 启动连接,默认超时120秒
w.start(waitTime=60) # 自定义超时60秒
w.isconnected() # 返回 True/False
w.stop() # 停止连接(程序退出自动调用,一般不需要)
注意事项:
w.start() 不会重复启动,需改参数时先 w.stop() 再 w.start()获取单品种多指标 或 多品种单指标 的日级时间序列数据。
w.wsd(codes, fields, beginTime, endTime, options, usedf=True)
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
| codes | str/list | 是 | 证券代码。多品种时 fields 只能单个 |
| fields | str/list | 是 | 指标。如 "close,high,low,open" |
| beginTime | str/datetime | 否 | 起始日期。支持 "2024-01-01", "20240101", "-30D", "IPO" |
| endTime | str/datetime | 否 | 截止日期。默认当前日期 |
| options | str | 否 | 参数字符串,见下方 |
常用 options:
PriceAdj=F 前复权 / B 后复权 / 不填=不复权Period=D 日 / W 周 / M 月 / Q 季 / Y 年Days=Trading 交易日(默认) / Weekdays 工作日 / Alldays 日历日Fill=Previous 沿用前值 / Blank 返回空值TradingCalendar=SSE 上交所(默认) / SZSE / HKEX / NYSE 等返回值: (ErrorCode, DataFrame) 当 usedf=True
# 单品种多指标
err, df = w.wsd("600519.SH", "open,high,low,close,volume,amt,pct_chg",
"2024-01-01", "2024-06-30", "PriceAdj=F", usedf=True)
# 多品种单指标
err, df = w.wsd("600519.SH,000858.SZ,000001.SZ", "close",
"-30D", "", "PriceAdj=F", usedf=True)
# 月线数据
err, df = w.wsd("600519.SH", "close,volume", "-2Y", "", "Period=M", usedf=True)
# 资金流向
err, df = w.wsd("600519.SH",
"mfd_inflow_xl,mfd_inflow_l,mfd_inflow_m,mfd_inflow_s,mfd_inflow",
"-30D", "", "", usedf=True)
# 债券数据
err, df = w.wsd("010107.SH", "ytm_b,duration,convexity,close",
"2024-01-01", "2024-06-30", "PriceAdj=CP", usedf=True)
常用 fields(行情): open, high, low, close, pre_close, volume, amt, pct_chg, turn, vwap, mkt_cap_ard, pe_ttm, pb_lf
常用 fields(资金流向): mfd_inflow_xl(超大单), mfd_inflow_l(大单), mfd_inflow_m(中单), mfd_inflow_s(小单), mfd_inflow(主力净流入)
获取多品种多指标的某一时点截面数据。
w.wss(codes, fields, options, usedf=True)
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
| codes | str/list | 是 | 证券代码,支持多品种 |
| fields | str/list | 是 | 指标,支持多指标 |
| options | str | 否 | 如 tradeDate, rptDate, rptType 等 |
常用 options:
tradeDate=20240101 指定交易日rptDate=20231231 指定报告期rptType=408001000 合并报表(默认) / 408004000 合并报表(调整) / 408005000 合并报表(更正前)year=2024 指定年份(业绩预告用)currencyType=CNY 币种# 行情快照(多品种多指标)
err, df = w.wss("600519.SH,000858.SZ",
"sec_name,close,pct_chg,pe_ttm,pb_lf,mkt_cap_ard",
f"tradeDate=20240628", usedf=True)
# 基本信息
err, df = w.wss("600519.SH",
"sec_name,sec_englishname,industry_sw,industry_sw_level2,"
"listdate,province,chairman,mkt_cap_ard,total_shares,float_a_shares",
"", usedf=True)
# 核心财务指标
err, df = w.wss("600519.SH",
"roe_ttm,roa_ttm,grossprofit_margin,netprofit_margin,"
"eps_ttm,pe_ttm,pb_lf,ps_ttm,current_ratio,debttoassets,"
"yoynetprofit,yoyrevenue",
f"tradeDate=20240628", usedf=True)
# 利润表
err, df = w.wss("600519.SH",
"tot_oper_rev,oper_rev,tot_oper_cost,oper_cost,"
"oper_profit,tot_profit,net_profit_is,eps_basic,eps_diluted",
"rptDate=20231231;rptType=408001000", usedf=True)
# 资产负债表
err, df = w.wss("600519.SH",
"tot_assets,tot_cur_assets,cash_equivalents,inventories,"
"tot_non_cur_assets,fix_assets,tot_liab,tot_cur_liab,"
"st_borrow,lt_borrow,tot_equity,undist_profit",
"rptDate=20231231;rptType=408001000", usedf=True)
# 现金流量表
err, df = w.wss("600519.SH",
"net_cash_flows_oper_act,net_cash_flows_inv_act,"
"net_cash_flows_fnc_act,free_cash_flow",
"rptDate=20231231;rptType=408001000", usedf=True)
# 业绩预告
err, df = w.wss("600519.SH",
"profitnotice_date,profitnotice_style,"
"profitnotice_netprofitmin,profitnotice_netprofitmax,"
"profitnotice_changemin,profitnotice_changemax,profitnotice_reason",
f"year=2024", usedf=True)
# 业绩快报
err, df = w.wss("600519.SH",
"expr_discdate,expr_oper_rev,expr_oper_profit,expr_tot_profit,"
"expr_net_profit_parent_comp,expr_eps_basic,expr_roe_diluted,"
"expr_yoy_oper_rev,expr_yoy_net_profit",
"rptDate=20231231", usedf=True)
# 区间涨跌幅
err, df = w.wss("600519.SH,000858.SZ", "sec_name,pct_chg_per",
"startDate=20240101;endDate=20240628", usedf=True)
常用 fields 速查见 references/field-catalog.md
获取当天实时行情快照,或订阅实时数据推送。
# 快照模式
w.wsq(codes, fields, usedf=True)
# 订阅模式
w.wsq(codes, fields, func=callback_function)
w.cancelRequest(requestID) # 取消订阅, 0=取消全部
# 快照
err, df = w.wsq("600519.SH,000858.SZ",
"rt_last,rt_open,rt_high,rt_low,rt_pct_chg,rt_vol,rt_amt,rt_chg",
usedf=True)
# 订阅模式
def on_quote(indata):
print(f"Code: {indata.Codes}, Fields: {indata.Fields}, Data: {indata.Data}")
data = w.wsq("600519.SH", "rt_last,rt_vol", func=on_quote)
# ... 等待回调 ...
w.cancelRequest(data.RequestID) # 取消订阅
实时行情 fields(rt_ 前缀): rt_last(最新价), rt_open, rt_high, rt_low, rt_pre_close, rt_pct_chg, rt_chg, rt_vol(成交量), rt_amt(成交额), rt_last_vol(最新成交量)
获取 1-60 分钟级别的 OHLCV 数据。支持国内六大交易所近三年数据。
w.wsi(codes, fields, beginTime, endTime, options, usedf=True)
| 参数 | 类型 | 必选 | 说明 |
|---|---|---|---|
| codes | str/list | 是 | 证券代码(带后缀) |
| fields | str/list | 是 | 如 "open,high,low,close,volume" |
| beginTime | str/datetime | 否 | 如 "2024-06-28 09:30:00" |
| endTime | str/datetime | 否 | 默认当前时间 |
options:
BarSize=5 分钟数(1-60,默认1)PriceAdj=F 前复权 / B 后复权 / U 不复权(默认)Fill=Previous 沿用前值限制: 单品种近三年;多品种时 品种数×天数 ≤ 100
# 5分钟K线
err, df = w.wsi("600519.SH", "open,high,low,close,volume,amt",
"2024-06-28 09:30:00", "2024-06-28 15:00:00", "BarSize=5", usedf=True)
# 15分钟K线(最近3天)
err, df = w.wsi("600519.SH", "open,high,low,close,volume",
"-3D 09:30:00", "", "BarSize=15", usedf=True)
# 期货分钟数据
err, df = w.wsi("IF00.CFE", "open,high,low,close",
"2024-06-28 09:30:00", "2024-06-28 15:00:00", "BarSize=1", usedf=True)
获取日内盘口买卖五档快照和分时成交数据。仅支持单品种,近七个交易日。
w.wst(codes, fields, beginTime, endTime, options, usedf=True)
# 逐笔成交
err, df = w.wst("600519.SH", "last,volume,amt,bid1,bsize1,ask1,asize1",
"2024-06-28 09:30:00", "2024-06-28 11:30:00", "", usedf=True)
Tick fields: last(最新价), volume, amt, bid1~bid5(买15价), 5量), bsize1~bsize5(买1ask1~ask5(卖15价), 5量)asize1~asize5(卖1
获取板块级别的历史日序列数据(如板块平均收盘价、PE等)。
w.wses(codes, fields, beginTime, endTime, options, usedf=True)
注意: 一次仅支持单指标,可多板块。
# 上证A股和深证A股的平均收盘价
err, df = w.wses("a001010200000000,a001010300000000", "sec_close_avg",
"2024-01-01", "2024-06-30", "", usedf=True)
options:
DynamicTime=0 使用板块历史成分 / 1 使用最新成分(默认)Period=D 日(默认) / W 周 / M 月获取多板块多指标的某一天截面数据。
w.wsee(codes, fields, options, usedf=True)
# 多板块截面对比
err, df = w.wsee("a001010200000000,a001010300000000",
"sec_close_avg,sec_pct_chg_avg,sec_pe_ttm_median",
"tradeDate=20240628", usedf=True)
获取板块成分、指数成分、龙虎榜、分红送转、停复牌等报表数据。
w.wset(tableName, options, usedf=True)
| tableName | 用途 | options 示例 |
|---|---|---|
sectorconstituent | 板块成分股 | date=2024-06-28;sectorid=a001010100000000 |
indexconstituent | 指数成分股 | date=2024-06-28;windcode=000300.SH |
abnormalactivitiesranking | 龙虎榜 | startdate=2024-06-28;enddate=2024-06-28;field=... |
dividendproposal | 分红方案 | year=2024 |
tradingsuspend | 停牌股票 | startdate=2024-06-28;enddate=2024-06-28 |
marginassetsandliabilities | 融资融券标的 | date=2024-06-28;sectorid=... |
etfconstituent | ETF 申赎清单 | date=2024-06-28;windcode=510300.SH |
# 全部A股成分股
err, df = w.wset("sectorconstituent",
"date=2024-06-28;sectorid=a001010100000000", usedf=True)
# 返回列: date, wind_code, sec_name
# 沪深300成分股
err, df = w.wset("indexconstituent",
"date=2024-06-28;windcode=000300.SH", usedf=True)
# 申万一级行业成分股
err, df = w.wset("sectorconstituent",
"date=2024-06-28;sectorid=a39901011g000000", usedf=True)
# 龙虎榜
err, df = w.wset("abnormalactivitiesranking",
"startdate=2024-06-28;enddate=2024-06-28;"
"field=trade_dt,wind_code,sec_name,close,pct_chg,netbuyamt",
usedf=True)
常用板块 sectorid:
| 板块 | sectorid |
|---|---|
| 全部A股 | a001010100000000 |
| 上证A股 | a001010200000000 |
| 深证A股 | a001010300000000 |
| 创业板 | 1000006528000000 |
| 科创板 | a001010l00000000 |
| 全部年金养老金 | 1000019226000000 |
| 混合养老金 | 1000023520000000 |
| 股票养老金 | 1000023515000000 |
| Wind股票型养老金 | 1000027483000000 |
获取 Wind EDB 宏观经济数据库中的指标数据。
w.edb(codes, beginTime, endTime, options, usedf=True)
# GDP
err, df = w.edb("M5567876,M5567889", "2022-01-01", "2024-06-30",
"Fill=Previous", usedf=True)
# CPI
err, df = w.edb("M0000612,M0000705,M0085932,M0085934", "2023-01-01", "",
"Fill=Previous", usedf=True)
# PMI
err, df = w.edb("M0017126,M0017127,M5206730", "2023-01-01", "",
"Fill=Previous", usedf=True)
# M2
err, df = w.edb("M0001384,M0001385,M0001391", "2023-01-01", "",
"Fill=Previous", usedf=True)
# 利率
err, df = w.edb("M0329537,M0329538,M0017139", "2023-01-01", "",
"Fill=Previous", usedf=True)
完整 EDB 指标代码见 references/edb-indicators.md
# w.tdays() — 获取日期区间内的交易日序列
data = w.tdays("2024-01-01", "2024-06-30", "")
dates = data.Data[0] # [datetime, datetime, ...]
# w.tdaysoffset() — 获取偏移后的交易日
data = w.tdaysoffset(0) # 最近交易日
data = w.tdaysoffset(-10) # 前推10个交易日
data = w.tdaysoffset(-3, "2024-06-28", "Period=M") # 前推3个月
date = data.Data[0][0] # datetime 对象
# w.tdayscount() — 统计区间内交易日数量
data = w.tdayscount("2024-01-01", "2024-12-31", "")
count = data.Data[0][0] # int
options:
Days=Trading 交易日(默认) / Weekdays 工作日 / Alldays 日历日Period=D 天(默认) / W 周 / M 月 / Q 季 / Y 年TradingCalendar=SSE 上交所(默认) / 其他交易所代码WindPy 支持相对日期表达式:
| 格式 | 含义 | 示例 |
|---|---|---|
-5D | 前推5个日历日 | beginTime="-5D" |
-10TD | 前推10个交易日 | beginTime="-10TD" |
-1M | 前推1个月 | beginTime="-1M" |
-2Y | 前推2年 | beginTime="-2Y" |
IPO | 上市首日 | beginTime="IPO" |
LYR | 去年年报 | rptDate 参数 |
MRQ | 最新一期 | rptDate 参数 |
RYF | 本年初 | beginTime="RYF" |
LME | 上月末 | endTime="LME" |
ED | 截止日期 | 用于计算 ED-10D |
err, df = w.wsd("600519.SH", "close", "-10D", "", "", usedf=True)
if err == 0:
print(df) # pandas DataFrame
print(df.columns) # ['CLOSE']
else:
print(f"错误: {err}")
data = w.wsd("600519.SH", "close", "-10D", "")
if data.ErrorCode == 0:
print(data.Codes) # ['600519.SH']
print(data.Fields) # ['CLOSE']
print(data.Times) # [datetime, ...]
print(data.Data) # [[1800.0, 1810.5, ...]]
| 错误码 | 含义 |
|---|---|
| 0 | 成功 |
| -40520007 | 无数据权限 |
| -40520017 | 字段不支持(Mac常见) |
| -40522006 | 参数错误 |
| -40521001 | 网络连接失败 |
from datetime import datetime
def get_latest_trade_date():
data = w.tdaysoffset(0, datetime.now().strftime('%Y-%m-%d'), "")
if data.ErrorCode == 0:
return data.Data[0][0].strftime('%Y-%m-%d')
return datetime.now().strftime('%Y-%m-%d')
def get_trade_date_offset(n):
"""前推 n 个交易日"""
data = w.tdaysoffset(-n, datetime.now().strftime('%Y-%m-%d'), "")
if data.ErrorCode == 0:
return data.Data[0][0].strftime('%Y-%m-%d')
return datetime.now().strftime('%Y-%m-%d')
trade_date = get_latest_trade_date()
# 获取成分股
data = w.wset("sectorconstituent", f"date={trade_date};sectorid=a001010100000000")
stocks = data.Data[1] # wind_code 列表
# 获取数据
err, df = w.wss(stocks,
"sec_name,industry_sw,close,pct_chg,pe_ttm,pb_lf,mkt_cap_ard",
f"tradeDate={trade_date.replace('-','')}", usedf=True)
results = {}
for year in range(2019, 2024):
err, df = w.wss("600519.SH",
"tot_oper_rev,net_profit_is,roe_diluted,eps_basic",
f"rptDate={year}1231;rptType=408001000", usedf=True)
if err == 0:
results[year] = df.iloc[0].to_dict()
import pandas as pd
summary = pd.DataFrame(results).T
# 获取混合养老金板块成分基金(代码格式 xxBxxx.OF)
err, df_sector = w.wset("sectorconstituent",
"date=20260307;sectorId=1000023520000000;", usedf=True)
fund_codes = df_sector['wind_code'].tolist()
code_to_name = dict(zip(df_sector['wind_code'], df_sector['sec_name']))
# 获取净值(多品种单指标)
err, df_nav = w.wsd(fund_codes, "nav",
"2020-01-01", "2026-03-07", "unit=1;", usedf=True)
# 获取基金资产净值(注意:用 netasset_total,不要用 vnetasset_total)
err, df_na = w.wsd(fund_codes, "netasset_total",
"2020-01-01", "2026-03-07", "unit=1;", usedf=True)
# 列名加上基金名称,便于识别
df_nav.columns = [f"{c}|{code_to_name.get(c, '')}" for c in df_nav.columns]
import numpy as np
err, df = w.wsd("600519.SH,000858.SZ,000001.SZ", "close",
"-250TD", "", "PriceAdj=F", usedf=True)
if err == 0:
returns = df.pct_change().dropna()
corr = returns.corr()
print(corr)
(ErrorCode, DataFrame);不加返回 WindData 对象"2024-01-01", "20240101", "-5D", datetime 对象close → CLOSE, pe_ttm → PE_TTM600519.SH(沪), 000001.SZ(深), 300750.SZ(创), 688xxx.SH(科创), 8xxxxx.BJ(北交所), xxBxxx.OF(养老金基金)vnetasset_total 不可用(错误码 -40522007),应使用 netasset_total 获取基金资产净值