원클릭으로
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 获取基金资产净值